On Fri, 2016-03-25 at 12:31 -0400, Craig Gallek wrote: > I believe the issue here is that closing the listen sockets will drop > any connections that are in the listen queue but have not been > accepted yet. In the case of reuseport, you could in theory drain > those queues into the non-closed sockets, but that probably has some > interesting consequences...
It is more complicated than this. Ideally, no TCP connection should be dropped during a server change. The idea is to let old program running as long as : 1) It has established TCP sessions 2) Some SYN_RECV pseudo requests are still around Once 3WHS completes for these SYN_RECV, children are queued into listener accept queues. But the idea is to direct all new SYN packets to the 'new' process and its listeners. (New SYN_RECV should be created on behalf on the new listeners only) In some environments, the listeners are simply transfered via FD passing, from the 'old process' to the new one.