summaryrefslogtreecommitdiffstats
path: root/server/request.c
diff options
context:
space:
mode:
authorGraham Leggett <minfrin@apache.org>2015-10-07 00:33:03 +0200
committerGraham Leggett <minfrin@apache.org>2015-10-07 00:33:03 +0200
commit2da6c9a57a7473c52d81b87e541228225691db6f (patch)
tree9aab1827521baf55de358244cf616bedd219b03c /server/request.c
parenteor_bucket: follow up to r1707084: use an inner shared bucket. (diff)
downloadapache2-2da6c9a57a7473c52d81b87e541228225691db6f.tar.xz
apache2-2da6c9a57a7473c52d81b87e541228225691db6f.zip
Add the AsyncFilter directive that allows the asynchronous filter
functionality to be switched off for certain classes of filters. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1707161 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'server/request.c')
-rw-r--r--server/request.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/server/request.c b/server/request.c
index 9c9ad9f93b..abf084e31a 100644
--- a/server/request.c
+++ b/server/request.c
@@ -2043,6 +2043,15 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_request_core_filter(ap_filter_t *f,
apr_status_t status = APR_SUCCESS;
apr_bucket_brigade *tmp_bb = f->ctx;
+ /*
+ * Handle the AsyncFilter directive. We limit the filters that are
+ * eligible for asynchronous handling here.
+ */
+ if (f->frec->ftype < f->c->async_filter) {
+ ap_remove_output_filter(f);
+ return ap_pass_brigade(f->next, bb);
+ }
+
if (!tmp_bb) {
tmp_bb = f->ctx = apr_brigade_create(f->r->pool, f->c->bucket_alloc);
}