Fix packet discards HTTP redirect. Disconnect the connection by poll() timeout. If timeout=0 and apr_wait_for_io_or_timeout()=APR_TIMEUP then apr_socket_recv() returns EAGAIN. Upstream-Status: Pending Signed-off-by: Noriaki Yoshitane Signed-off-by: Li Wang --- network_io/unix/sendrecv.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/network_io/unix/sendrecv.c b/network_io/unix/sendrecv.c index c133a26..e8faf15 100644 --- a/network_io/unix/sendrecv.c +++ b/network_io/unix/sendrecv.c @@ -85,6 +85,10 @@ apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len) && (sock->timeout > 0)) { do_select: arv = apr_wait_for_io_or_timeout(NULL, sock, 1); + if ((arv == APR_TIMEUP) && (sock->timeout == 0)) { + *len = 0; + return EAGAIN; + } if (arv != APR_SUCCESS) { *len = 0; return arv; -- 1.7.9.5