Skip to content

Hand accepted sockets to handler via a queue - #75

Merged
garethpotter merged 1 commit into
mainfrom
socket-server-handoff-queue
Nov 3, 2026
Merged

garethpotter merged 1 commit into
mainfrom
socket-server-handoff-queue

Conversation

@amitchone

Copy link
Copy Markdown
Collaborator

The acceptor thread used to write newly accepted sockets straight into the array the handler thread was polling, and because Zephyr's poll checks that array twice, when we refilled a slit mid-poll, the handler mistakes an idle client as readable and could block on it indefinitely...

Now the acceptor hands sockets over through a queue, only the handler touches these and client sockets are non-blocking.

Ultimately, after many hours of uptime we would occasionally see refused connections because there were no sockets left, even though, theoretically, "nothing" had used that many sockets

This also rounds out the keepalive fix which, after even more testing, led to this discovery and fix

@garethpotter

Copy link
Copy Markdown
Collaborator

I think this is OK. I suppose it might be worth having Claude try to beef up the client/server tests a bit.

@garethpotter
garethpotter merged commit f74b743 into main Nov 3, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants