From: Jim Jagielski Date: Fri, 23 Dec 2016 12:36:26 +0000 (+0000) Subject: Merge r1775770 from trunk: X-Git-Tag: 2.4.26~424 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=483701382f7cde121318c134f4fc74143b4e8aff;p=thirdparty%2Fapache%2Fhttpd.git Merge r1775770 from trunk: pass along error buckets In 2.4, they are generated by LimitRequestBody failures. trunk no longer uses error buckets in this path, but someone else could. PR60375 Submitted By: Eric Covener,Lubos Uhliarik Committed By: covener Submitted by: covener Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775832 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 4cae328cae9..43ec2edb544 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.4.26 + *) mod_ext_filter: Don't interfere with "error buckets" issued by other + modules. PR60375. [Eric Covener, Lubos Uhliarik] + *) mod_http2: fixes https://github.com/icing/mod_h2/issues/126 e.g. beam bucket lifetime handling when data is sent over temporary pools. [Stefan Eissing] diff --git a/STATUS b/STATUS index 302ac86d832..2cf13fa5a2c 100644 --- a/STATUS +++ b/STATUS @@ -119,12 +119,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) ext_filter: Don't eat error buckets. PR60375 - trunk patch: http://svn.apache.org/r1775770 - 2.4 patch: trunk works - +1: covener, ylavic, jim - - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/filters/mod_ext_filter.c b/modules/filters/mod_ext_filter.c index 9f183f69bca..7aac19d86e3 100644 --- a/modules/filters/mod_ext_filter.c +++ b/modules/filters/mod_ext_filter.c @@ -757,6 +757,13 @@ static int ef_unified_filter(ap_filter_t *f, apr_bucket_brigade *bb) break; } + if (AP_BUCKET_IS_ERROR(b)) { + apr_bucket *cpy; + apr_bucket_copy(b, &cpy); + APR_BRIGADE_INSERT_TAIL(bb_tmp, cpy); + break; + } + rv = apr_bucket_read(b, &data, &len, APR_BLOCK_READ); if (rv != APR_SUCCESS) { ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01463) "apr_bucket_read()");