Module Name: src Committed By: tls Date: Mon May 23 13:54:34 UTC 2016
Modified Files: src/sys/kern: uipc_socket2.c Log Message: Fix a longstanding problem with accept filters noticed by Timo Buhrmester: sockets sitting in the accept filter can consume the entire listen queue, such that the application is never able to handle any connections. Handle this by simply passing through the oldest queued cxn when the queue is full. This is fair because the longer a cxn lingers in the queue (stays connected but does not meet the requirements of the filter for passage) the more likely it is to be passed through, at which point the application can dispose of it. Works because none of our accept filters actually allocate private state per-cxn. If they did, we'd have to fix the API bug that there is presently no way to tell an accf to finish/deallocate for a single cxn (accf_destroy kills off the entire filter instance for a given listen socket). To generate a diff of this commit: cvs rdiff -u -r1.122 -r1.123 src/sys/kern/uipc_socket2.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.