I've had some problems with what you are talking about. I've written many servers in perl. Some Prefork, Some Fork on command, some don't fork at all (yucky). Ok now when I was forking a process I was passing the socket off to the children for just reading and writing. The main parent didn't close the socket but i had the child close the socket. I server still had the socket open so it never got received so when the next socket connect came in it "overwrote" the variable and then terminated the connection. It never gets to send the close. This also depends on the type of OS you use also.