--- srclib/apr/network_io/unix/sendrecv.c.orig	2005-02-04 14:36:31.000000000 -0600
+++ srclib/apr/network_io/unix/sendrecv.c	2005-05-25 16:31:08.000000000 -0500
@@ -41,7 +41,7 @@
         rv = write(sock->socketdes, buf, (*len));
     } while (rv == -1 && errno == EINTR);
 
-    if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) 
+    while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) 
         && apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
         apr_status_t arv;
 do_select:
@@ -81,7 +81,7 @@
         rv = read(sock->socketdes, buf, (*len));
     } while (rv == -1 && errno == EINTR);
 
-    if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && 
+    while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && 
         apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
 do_select:
         arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
@@ -121,7 +121,7 @@
                     where->salen);
     } while (rv == -1 && errno == EINTR);
 
-    if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)
+    while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)
         && apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
         apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
         if (arv != APR_SUCCESS) {
@@ -154,7 +154,7 @@
                       (struct sockaddr*)&from->sa, &from->salen);
     } while (rv == -1 && errno == EINTR);
 
-    if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) &&
+    while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) &&
         apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
         apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
         if (arv != APR_SUCCESS) {
@@ -201,7 +201,7 @@
         rv = writev(sock->socketdes, vec, nvec);
     } while (rv == -1 && errno == EINTR);
 
-    if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && 
+    while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && 
         apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
         apr_status_t arv;
 do_select:
@@ -300,7 +300,7 @@
                       *len);   /* number of bytes to send */
     } while (rv == -1 && errno == EINTR);
 
-    if (rv == -1 && 
+    while (rv == -1 && 
         (errno == EAGAIN || errno == EWOULDBLOCK) && 
         apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
 do_select:
@@ -641,7 +641,7 @@
         }
     } while (rc == -1 && errno == EINTR);
 
-    if (rc == -1 && 
+    while (rc == -1 && 
         (errno == EAGAIN || errno == EWOULDBLOCK) && 
         apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
         apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
@@ -789,7 +789,7 @@
                        flags);             /* flags */
     } while (rv == -1 && errno == EINTR);
 
-    if (rv == -1 &&
+    while (rv == -1 &&
         (errno == EAGAIN || errno == EWOULDBLOCK) &&
         apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
 do_select:
