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


Reply via email to