--- 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;