https://bz.apache.org/bugzilla/show_bug.cgi?id=69410
https://bz.apache.org/bugzilla/attachment.cgi?id=39941&action=diff&collapsed=&headers=1&format=raw

Index: poll/unix/poll.c
--- poll/unix/poll.c.orig
+++ poll/unix/poll.c
@@ -113,7 +113,10 @@ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprse
     }
     num_to_poll = i;
 
-    if (timeout > 0) {
+    if (timeout < 0) {
+        timeout = -1;
+    }
+    else if (timeout > 0) {
         /* convert microseconds to milliseconds (round up) */
         timeout = (timeout + 999) / 1000;
     }
@@ -255,7 +258,10 @@ static apr_status_t impl_pollset_poll(apr_pollset_t *p
     }
 #endif
 
-    if (timeout > 0) {
+    if (timeout < 0) {
+        timeout = -1;
+    }
+    else if (timeout > 0) {
         timeout = (timeout + 999) / 1000;
     }
 
@@ -411,7 +417,10 @@ static apr_status_t impl_pollcb_poll(apr_pollcb_t *pol
     }
 #endif
 
-    if (timeout > 0) {
+    if (timeout < 0) {
+        timeout = -1;
+    }
+    else if (timeout > 0) {
         timeout = (timeout + 999) / 1000;
     }
 
