I revue your patch and I notice :
We could use select to determine if something happen to the
connection, typically readfds will be set if something is to read.
With ajp13 protocol where everything is consumed after reading the
previous tomcat reply, select will set read when the connection is
closed (in TCP a closed tcp session is really a message send from
closer).
But :
- Win32 platform are not handled with the select;
- there is a check of errno which couldn't be safe in multi-threaded env like Apache 2.0
- if you remove your ethernet cable you may never see anything in select readdfs
before TCP/IP stack timeout.
- Why loose cpu cycle to check if the communication socket is available before
each request to be sent. I'll be to use an exception mecanism, so
- send request
- read reply
- if reply read fail, retry to send request, if it fail = ERR 500
I'll send some modification to worker later