On Thu, Apr 14, 2005 at 12:02:35PM -0700, Wilfredo SÃnchez Vega wrote:
>   We're investigating possible issues in the system.  One comment  
> from a kernel developer:
> 
>     We are returning EWOULDBLOCK because the socket is in non-blocking.
>     Inspecting the socket, so_state is 0x182 (0x100 is SS_NBIO).  
> Setting
>     a breakpoint on soioctl for SS_NBIO I can clearly see that httpd
>     is setting the socket as non-blocking. httpd is using fcntl which
>     translate the non-blocking change to an soioctl.
> 
>   Does it make sense that the socket is non-blocking?

Recent httpd releases (2.0.49 onwards) will set listening sockets as
non-blocking if more than one listener is configured, to fix
CAN-2004-0174.

This caused a number of obscure regressions on BSD platforms where APR
failed to detect (or, in some cases, the OS failed to correctly report)
whether or not O_NONBLOCK is inherited across to the socket returned by
accept().  That would be the first thing to check if you're seeing
issues like this - the test program APR uses is here:

http://people.apache.org/~jorton/nonblock.c

joe

Reply via email to