Author: rhuijben
Date: Mon Nov 16 21:18:43 2015
New Revision: 1714679
URL: http://svn.apache.org/viewvc?rev=1714679&view=rev
Log:
* incoming.c
(read_from_client): Don't return EAGAIN here or we exit the context
loop.
Modified:
serf/trunk/incoming.c
Modified: serf/trunk/incoming.c
URL:
http://svn.apache.org/viewvc/serf/trunk/incoming.c?rev=1714679&r1=1714678&r2=1714679&view=diff
==============================================================================
--- serf/trunk/incoming.c (original)
+++ serf/trunk/incoming.c Mon Nov 16 21:18:43 2015
@@ -347,6 +347,9 @@ static apr_status_t read_from_client(ser
}
while (status == APR_SUCCESS);
+ if (APR_STATUS_IS_EAGAIN(status) || status == SERF_ERROR_WAIT_CONN)
+ return APR_SUCCESS;
+
return status;
}
@@ -607,6 +610,9 @@ apr_status_t serf__process_listener(serf
return status;
}
+ if ((status = apr_socket_opt_set(l->skt, APR_SO_NONBLOCK, 1)))
+ return status;
+
/* Set the socket to be non-blocking */
if ((status = apr_socket_timeout_set(in, 0)) != APR_SUCCESS)
return status;
@@ -755,6 +761,14 @@ apr_status_t serf_listener_create(
if (rv)
return rv;
+ rv = apr_socket_opt_set(l->skt, APR_SO_NONBLOCK, 1);
+ if (rv)
+ return rv;
+
+ rv = apr_socket_timeout_set(l->skt, 0);
+ if (rv)
+ return rv;
+
rv = apr_socket_bind(l->skt, sa);
if (rv) {
apr_pool_destroy(l->pool);