Accepting drains the listener queue; the backlog is not the total number of open application connections.

The listen backlog holds connections waiting for accept

On Linux TCP sockets, the listen() backlog concerns established connections waiting for the application to accept them. The incomplete-handshake queue is a separate concept. Calling accept() removes a pending connection and returns a connected socket for application use. That accepted connection no longer occupies the listener’s accept queue, even if it remains open and busy for a long time. ...

October 25, 2027 · 4 min · XB Field Notes