apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Basant Kukreja <Basant.Kukr...@Sun.COM>
Subject apr_pollset_poll return value (APR_EINTR) on solaris
Date Tue, 12 Feb 2008 19:32:27 GMT
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 {


Mime
View raw message