summaryrefslogtreecommitdiff
path: root/server/request.c
diff options
context:
space:
mode:
authorGraham Leggett <minfrin@apache.org>2015-10-06 22:33:03 +0000
committerGraham Leggett <minfrin@apache.org>2015-10-06 22:33:03 +0000
commit2da6c9a57a7473c52d81b87e541228225691db6f (patch)
tree9aab1827521baf55de358244cf616bedd219b03c /server/request.c
parentf296d2b85b51618ee76b4dfa96673887c4ab909f (diff)
downloadhttpd-2da6c9a57a7473c52d81b87e541228225691db6f.tar.gz
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);
}