From: Joe Orton Date: Mon, 17 May 2004 15:24:31 +0000 (+0000) Subject: * server/core.c (core_output_filter): Don't explicitly delete the EOC X-Git-Tag: pre_ajp_proxy~257 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bcb62c5b41d694f54dd717ee3dd40d160f6459aa;p=apache * server/core.c (core_output_filter): Don't explicitly delete the EOC bucket, and don't buffer the brigade if it ends in an EOC. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@103686 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/core.c b/server/core.c index 6277477d88..347d8bd787 100644 --- a/server/core.c +++ b/server/core.c @@ -3945,12 +3945,9 @@ static apr_status_t core_output_filter(ap_filter_t *f, apr_bucket_brigade *b) { /* keep track of the last bucket processed */ last_e = e; - if (APR_BUCKET_IS_EOS(e)) { + if (APR_BUCKET_IS_EOS(e) || AP_BUCKET_IS_EOC(e)) { break; } - if (AP_BUCKET_IS_EOC(e)) { - apr_bucket_delete(e); - } else if (APR_BUCKET_IS_FLUSH(e)) { if (e != APR_BRIGADE_LAST(b)) { more = apr_brigade_split(b, APR_BUCKET_NEXT(e)); @@ -4106,7 +4103,8 @@ static apr_status_t core_output_filter(ap_filter_t *f, apr_bucket_brigade *b) /* Completed iterating over the brigade, now determine if we want * to buffer the brigade or send the brigade out on the network. * - * Save if we haven't accumulated enough bytes to send, and: + * Save if we haven't accumulated enough bytes to send, the connection + * is not about to be closed, and: * * 1) we didn't see a file, we don't have more passes over the * brigade to perform, AND we didn't stop at a FLUSH bucket. @@ -4117,6 +4115,7 @@ static apr_status_t core_output_filter(ap_filter_t *f, apr_bucket_brigade *b) * with the hope of concatenating with another response) */ if (nbytes + flen < AP_MIN_BYTES_TO_WRITE + && !AP_BUCKET_IS_EOC(last_e) && ((!fd && !more && !APR_BUCKET_IS_FLUSH(last_e)) || (APR_BUCKET_IS_EOS(last_e) && c->keepalive == AP_CONN_KEEPALIVE))) {