From: Allan K. Edwards Date: Wed, 6 Mar 2002 17:29:39 +0000 (+0000) Subject: make sure r->proto_xxput_filter gets updated as necessary when X-Git-Tag: 2.0.33~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1fc7cb3778d735b0c4b63747b62541d76f2a7777;p=thirdparty%2Fapache%2Fhttpd.git make sure r->proto_xxput_filter gets updated as necessary when deleting a filter from the chain git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93732 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/util_filter.c b/server/util_filter.c index 6f82c186746..c818de90515 100644 --- a/server/util_filter.c +++ b/server/util_filter.c @@ -461,12 +461,15 @@ AP_DECLARE(ap_filter_t *) ap_add_output_filter_handle(ap_filter_rec_t *f, &c->output_filters); } -static void remove_any_filter(ap_filter_t *f, ap_filter_t **r_filt, +static void remove_any_filter(ap_filter_t *f, ap_filter_t **r_filt, ap_filter_t **p_filt, ap_filter_t **c_filt) { ap_filter_t **curr = r_filt ? r_filt : c_filt; ap_filter_t *fscan = *curr; + if (*p_filt == f) + *p_filt = (*p_filt)->next; + if (*curr == f) { *curr = (*curr)->next; (*curr)->prev = NULL; @@ -486,12 +489,14 @@ static void remove_any_filter(ap_filter_t *f, ap_filter_t **r_filt, AP_DECLARE(void) ap_remove_input_filter(ap_filter_t *f) { remove_any_filter(f, f->r ? &f->r->input_filters : NULL, + f->r ? &f->r->proto_input_filters : NULL, &f->c->input_filters); } AP_DECLARE(void) ap_remove_output_filter(ap_filter_t *f) { remove_any_filter(f, f->r ? &f->r->output_filters : NULL, + f->r ? &f->r->proto_output_filters : NULL, &f->c->output_filters); }