--- poll/unix/port.c.orig	2009-08-21 08:16:52.140947520 -0400
+++ poll/unix/port.c	2009-08-21 08:18:58.662675195 -0400
@@ -325,6 +325,11 @@
     apr_atomic_dec32(&pollset->waiting);
     (*num) = nget;
 
+    if (ret == -1 && nget &&
+        (errno == ETIME || errno == EINTR)) {
+        ret = 0;
+    }
+
     if (ret == -1) {
         (*num) = 0;
         if (errno == EINTR) {
@@ -490,6 +495,11 @@
     ret = port_getn(pollcb->port_fd, pollcb->port_set, pollcb->nalloc,
                     &nget, tvptr);
 
+    if (ret == -1 && nget &&
+        (errno == ETIME || errno == EINTR)) {
+        ret = 0;
+    }
+
     if (ret == -1) {
         if (errno == ETIME || errno == EINTR) {
             rv = APR_TIMEUP;