ok ... WebCit doesn't have the same problem because the network listener 
is structured a little bit differently.  
   
 In the Citadel server, we put in a call to fcntl() to set all master 
listening sockets to non-blocking, in order to deal with a rare situation 
in which select() told us about activity on the socket but accept() didn't 
return, thereby locking up the server until another connection arrived.  
This caused the individual session sockets to be set to non-blocking as 
well.  
   
 Subsequently setting the individual session sockets back to blocking 
seems to have corrected the problem I was seeing on FreeBSD.  I don't know 
why FreeBSD gives us EAGAIN on write() in some situations, where Linux and 
Solaris don't ... but the change does fix it.  
   
 This is irrelevant for WebCit because the WebCit listener blocks on 
accept() instead of select() while waiting for activity.  

Reply via email to