From: Eric Covener Date: Wed, 2 Nov 2016 12:01:23 +0000 (+0000) Subject: revert 1767482 backport X-Git-Tag: 2.4.24~161 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ba3dbf0ab1eae88ba703e6bc13aff7db77d607c6;p=thirdparty%2Fapache%2Fhttpd.git revert 1767482 backport cleanup next git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1767647 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 9ee96ba26b4..0d6561b6629 100644 --- a/CHANGES +++ b/CHANGES @@ -18,9 +18,6 @@ Changes with Apache 2.4.24 than running with the modified XFF but original TCP address. PR 49839/PR 60251 - *) core: avoid adding multiple subrequest filters when there are nested - subrequests. PR 58292 - *) mod_http2: connection shutdown revisited: corrected edge cases on shutting down ongoing streams, changed log warnings to be less noisy when waiting on long running tasks. [Stefan Eissing] diff --git a/STATUS b/STATUS index 2ec21c78aea..cbdc4c36c6d 100644 --- a/STATUS +++ b/STATUS @@ -117,6 +117,11 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] + *) core: avoid adding multiple subrequest filters when there are nested + subrequests. PR58292 + trunk patch: http://svn.apache.org/r1698239 + 2.4.x 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/http/http_request.c b/modules/http/http_request.c index b2dc893d41f..9ce7b8b3298 100644 --- a/modules/http/http_request.c +++ b/modules/http/http_request.c @@ -711,16 +711,8 @@ AP_DECLARE(void) ap_internal_fast_redirect(request_rec *rr, request_rec *r) update_r_in_filters(r->output_filters, rr, r); if (r->main) { - ap_filter_t *next = r->output_filters; - while (next && (next != r->proto_output_filters)) { - if (next->frec == ap_subreq_core_filter_handle) { - break; - } - } - if (!next || next == r->proto_output_filters) { - ap_add_output_filter_handle(ap_subreq_core_filter_handle, - NULL, r, r->connection); - } + ap_add_output_filter_handle(ap_subreq_core_filter_handle, + NULL, r, r->connection); } else { /* diff --git a/server/request.c b/server/request.c index 6eb14d591c0..eecc0266b15 100644 --- a/server/request.c +++ b/server/request.c @@ -1960,8 +1960,6 @@ static request_rec *make_sub_request(const request_rec *r, /* start with the same set of output filters */ if (next_filter) { - ap_filter_t *scan = next_filter; - /* while there are no input filters for a subrequest, we will * try to insert some, so if we don't have valid data, the code * will seg fault. @@ -1970,15 +1968,8 @@ static request_rec *make_sub_request(const request_rec *r, rnew->proto_input_filters = r->proto_input_filters; rnew->output_filters = next_filter; rnew->proto_output_filters = r->proto_output_filters; - while (scan && (scan != r->proto_output_filters)) { - if (scan->frec == ap_subreq_core_filter_handle) { - break; - } - } - if (!scan || scan == r->proto_output_filters) { - ap_add_output_filter_handle(ap_subreq_core_filter_handle, - NULL, rnew, rnew->connection); - } + ap_add_output_filter_handle(ap_subreq_core_filter_handle, + NULL, rnew, rnew->connection); } else { /* If NULL - we are expecting to be internal_fast_redirect'ed