> Hmmm... what does Sendmail do? It's got lots of children, but still > manages to refuse connections when it gets busy (RefuseLA)... I kinda > like that behavior. I definitely like it better than keeping more and > more sockets open. > > -- > Stephen L. Ulmer [EMAIL PROTECTED] > Senior Systems Programmer http://www.ulmer.org/ > Northeast Regional Data Center VOX: (352) 392-2061 > University of Florida FAX: (352) 392-9440
It may not prefork it's processes. The master process could accept the connection, fork, closes the socket (the child is now servicing it), and go back into a listen state. Therefore the master process can choose to reject connections without any coordination from the children. Children then have a service life of one connection and that's it. They could also use a technique where a master process can pass file (socket) descriptors down to a child via a unix domain socket using sendmsg() or recvmsg(). In this case the master accepts the connection, passes the descriptor to a child via sendmsg(), closes the socket (the child should now be servicing it), and goes back to listening. Either way, in the above, the master process is the only process that actually accepts the connections. I'm not sure how sendmail actually does it though, the above is purely speculation... Jeremy