mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
Back out the recent change to ap_get_brigade, to make it use indirection
again. The problem is that the amount of data read from the network, is not necessarily the amount of data returned from the filters. It is possible for input filters to add bytes to the data read from the network. To fix the original bug, I just removed the line from ap_get_client_block that decremented r->remaining, we allow the http_filter to do that for us. I have also removed an incorrect comment. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89041 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -367,6 +367,7 @@ static void check_pipeline_flush(request_rec *r)
|
||||
### allow us to defer creation of the brigade to when we actually
|
||||
### need to send a FLUSH. */
|
||||
apr_bucket_brigade *bb = apr_brigade_create(r->pool);
|
||||
int zero = 0;
|
||||
|
||||
/* Flush the filter contents if:
|
||||
*
|
||||
@@ -376,7 +377,7 @@ static void check_pipeline_flush(request_rec *r)
|
||||
/* ### shouldn't this read from the connection input filters? */
|
||||
/* ### is zero correct? that means "read one line" */
|
||||
if (!r->connection->keepalive ||
|
||||
ap_get_brigade(r->input_filters, bb, AP_MODE_PEEK, 0) != APR_SUCCESS) {
|
||||
ap_get_brigade(r->input_filters, bb, AP_MODE_PEEK, &zero) != APR_SUCCESS) {
|
||||
apr_bucket *e = apr_bucket_flush_create();
|
||||
|
||||
/* We just send directly to the connection based filters. At
|
||||
|
Reference in New Issue
Block a user