On Tue, Mar 24, 2015 at 1:16 PM, Eric Covener <[email protected]> wrote:
>
> Any thoughts?

Wouldn't something like this help?

Index: modules/http/http_request.c
===================================================================
--- modules/http/http_request.c    (revision 1669289)
+++ modules/http/http_request.c    (working copy)
@@ -232,7 +232,10 @@ static void check_pipeline(conn_rec *c, apr_bucket
 {
     if (c->keepalive != AP_CONN_CLOSE && !c->aborted) {
         apr_status_t rv;
+        apr_socket_t *csd = ap_get_conn_socket(c);

+        apr_socket_opt_set(csd, APR_INCOMPLETE_READ, 1);
+
         AP_DEBUG_ASSERT(APR_BRIGADE_EMPTY(bb));
         rv = ap_get_brigade(c->input_filters, bb, AP_MODE_SPECULATIVE,
                             APR_NONBLOCK_READ, 1);
@@ -245,6 +248,8 @@ static void check_pipeline(conn_rec *c, apr_bucket
         }
         else {
             c->data_in_input_filters = 1;
+
+            apr_socket_opt_set(csd, APR_INCOMPLETE_READ, 0);
         }
     }
 }
--

This is an immediate poll() though, not with a "fraction of a second" timeout.
We could also apr_socket_timeout_set() something, but I'm afraid it
would be at the expense of other events when nothing is available...

Reply via email to