httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Ames <grega...@remulak.net>
Subject Re: [PATCH] pipelining bug in Event MPM
Date Tue, 02 Nov 2004 01:39:47 GMT
Greg Ames wrote:
> Justin Erenkrantz wrote:

>> Okay.  I'd be curious to figure out what's going on with the 
>> speculative non-blocking reads.  

> The odd behavior with speculative reads is due to API differences that I 
> didn't take into account.  

This makes it behave properly on my laptop with speculative reads.  I have no 
idea if it works with mod_ssl or what speculative buys us.

Greg

--- modules/http/http_request.c.old     2004-11-01 20:05:49.000000000 -0500
+++ modules/http/http_request.c 2004-11-01 20:11:17.000000000 -0500
@@ -206,12 +206,10 @@
      /* ### shouldn't this read from the connection input filters? */
      /* ### is zero correct? that means "read one line" */
      if (r->connection->keepalive != AP_CONN_CLOSE) {
-        /* if (ap_get_brigade(r->input_filters, bb, AP_MODE_SPECULATIVE,
-         *                       APR_NONBLOCK_READ, 1) != APR_SUCCESS) {
-         */
-        if (ap_get_brigade(r->input_filters, bb, AP_MODE_EATCRLF,
-                       APR_NONBLOCK_READ, 0) != APR_SUCCESS) {
-            c->data_in_input_filters = 0;  /* we got APR_EOF or an error */
+        if (ap_get_brigade(r->input_filters, bb, AP_MODE_SPECULATIVE,
+                           APR_NONBLOCK_READ, 1) != APR_SUCCESS ||
+                APR_BRIGADE_EMPTY(bb)) {
+            c->data_in_input_filters = 0;  /* no input or an error */
          }
          else {
              c->data_in_input_filters = 1;


Mime
View raw message