summaryrefslogtreecommitdiffstats
path: root/modules/filters
diff options
context:
space:
mode:
authorNick Kew <niq@apache.org>2016-01-25 23:31:19 +0100
committerNick Kew <niq@apache.org>2016-01-25 23:31:19 +0100
commit371b438a8a66cb6d76a87d14fe54af46c9a190d3 (patch)
treed8e7f35989926a870c3355a3669eeff2bc5f1d77 /modules/filters
parentxforms (diff)
downloadapache2-371b438a8a66cb6d76a87d14fe54af46c9a190d3.tar.xz
apache2-371b438a8a66cb6d76a87d14fe54af46c9a190d3.zip
mod_filter: Fix AddOutputFilterByType with non-content-level filters.
PR58856 (Micha Lenk) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1726705 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/filters')
-rw-r--r--modules/filters/mod_filter.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/modules/filters/mod_filter.c b/modules/filters/mod_filter.c
index 7b692233ee..5b5ecf6971 100644
--- a/modules/filters/mod_filter.c
+++ b/modules/filters/mod_filter.c
@@ -444,6 +444,12 @@ static const char *add_filter(cmd_parms *cmd, void *CFG,
ap_expr_info_t *node;
const char *err = NULL;
+ /* if provider has been registered, we can look it up */
+ provider_frec = ap_get_output_filter_handle(pname);
+ if (!provider_frec) {
+ return apr_psprintf(cmd->pool, "Unknown filter provider %s", pname);
+ }
+
/* fname has been declared with DeclareFilter, so we can look it up */
frec = apr_hash_get(cfg->live_filters, fname, APR_HASH_KEY_STRING);
@@ -454,17 +460,13 @@ static const char *add_filter(cmd_parms *cmd, void *CFG,
return c;
}
frec = apr_hash_get(cfg->live_filters, fname, APR_HASH_KEY_STRING);
+ frec->ftype = provider_frec->ftype;
}
if (!frec) {
return apr_psprintf(cmd->pool, "Undeclared smart filter %s", fname);
}
- /* if provider has been registered, we can look it up */
- provider_frec = ap_get_output_filter_handle(pname);
- if (!provider_frec) {
- return apr_psprintf(cmd->pool, "Unknown filter provider %s", pname);
- }
provider = apr_palloc(cmd->pool, sizeof(ap_filter_provider_t));
if (expr) {
node = ap_expr_parse_cmd(cmd, expr, 0, &err, NULL);