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);