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