On Sep 30, 2005, at 11:19 AM, William A. Rowe, Jr. wrote:

Linux, Win32 and Netware begin their new socket's life in a blocking
state, while Solaris and AIX begin their life in a non-blocking state.
[...]
Do we want to;

 * Fix mod_echo with this gross little hack?  (and leave it to each
   protocol module author?)

 * Modify mod_ssl so that APR_BLOCK_READ actually toggles the socket
   to blocking mode (or keeps reinvoking the core until it gets the
   bytes that SSL demands)?

 * Modify the core so that APR_BLOCK_READ actually toggles the socket
   blocking mode?

 * Modify the MPM such that the newly accept()ed socket is toggled
   into blocking mode?

 * Modify APR such that a newly created socket's state is of some
   known value?  (Right now, it pretends that it knows if the platform
   has predetermined that the accept()ed socket's state is inherited
from the listening socket - and Linux's state proves this assumption
   was invalid.)

Thoughts/comments?

I think the 3rd option--modify the core so that APR_BLOCK_READ actually
toggles the socket blocking mode--might be the best way to go. This would
provide predictable semantics for modules that know they want to do
blocking reads, while still allowing the MPM to put newly accepted sockets
in nonblocking mode by default if the MPM has some good reason to do so.

Brian

Reply via email to