Hi,
I am Basant Kukreja. I was working on apache httpd bug 42580.
http://issues.apache.org/bugzilla/show_bug.cgi?id=42580
I figured out that the cause of the problem might be in APR.
apr_pollset_poll function returns APR_TIMEUP even when errno is EINTR. The
caller functions e.g listener_thread (in worker.c) expects this API to return
APR_EINTR if apr_pollset_poll fails.
Other implementation of apr_pollset_poll (as in epoll.c) handles it correctly.
Please provide your comments. Suggested patch is attached. With this patch the
issue 42580 seems to be fixed to me.
Regards,
Basant.
-- orghttpd-2.2.6/srclib/apr/poll/unix/port.c Fri Apr 13 13:54:13 2007
+++ httpd-2.2.6/srclib/apr/poll/unix/port.c Mon Feb 11 14:11:56 2008
@@ -295,7 +295,10 @@
if (ret == -1) {
(*num) = 0;
- if (errno == ETIME || errno == EINTR) {
+ if (errno == EINTR) {
+ rv = APR_EINTR;
+ }
+ else if (errno == ETIME) {
rv = APR_TIMEUP;
}
else {