summaryrefslogtreecommitdiffstats
path: root/modules/http
diff options
context:
space:
mode:
authorYann Ylavic <ylavic@apache.org>2018-09-04 04:40:49 +0200
committerYann Ylavic <ylavic@apache.org>2018-09-04 04:40:49 +0200
commit5262e7e73ade018f7849bed760d9fefac9fa9e5f (patch)
treef8889215d600d6e05d20ee44dd12c9b8567529fe /modules/http
parentAxe spurious comment (added and addressed in r1839997). (diff)
downloadapache2-5262e7e73ade018f7849bed760d9fefac9fa9e5f.tar.xz
apache2-5262e7e73ade018f7849bed760d9fefac9fa9e5f.zip
core: follow up to r1839997: recycle request filters to a delayed ring first.
We want not only ap_filter_output_pending() to be able to access each pending filter's *f after the EOR is destroyed, but also each request filter to do the same until it returns. So request filters are now always cleaned up into a dead_filters ring which is merged into spare_filters only when ap_filter_recycle() is called explicitely, that is in ap_process_request_after_handler() and ap_filter_output_pending(). The former takes care of recycling at the end of the request, with any MPM, while the latter keeps recycling during MPM event's write completion. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1840002 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/http')
-rw-r--r--modules/http/http_request.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/modules/http/http_request.c b/modules/http/http_request.c
index 1413a20c93..ecd59f3a0c 100644
--- a/modules/http/http_request.c
+++ b/modules/http/http_request.c
@@ -401,6 +401,10 @@ AP_DECLARE(void) ap_process_request_after_handler(request_rec *r)
(void)ap_check_pipeline(c, bb, DEFAULT_LIMIT_BLANK_LINES);
apr_brigade_cleanup(bb);
+ if (!c->aborted) {
+ ap_filter_recyle(c);
+ }
+
if (c->cs) {
if (c->aborted) {
c->cs->state = CONN_STATE_LINGER;