From: Ryan Bloom Date: Mon, 23 Oct 2000 10:31:44 +0000 (+0000) Subject: Fix internal redirects. They should have their own HTTP_HEADER filter X-Git-Tag: APACHE_2_0_ALPHA_8~276 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=776482abf43bb9715c3c343f7b9b22c9aefbd389;p=apache Fix internal redirects. They should have their own HTTP_HEADER filter instance, and we need to remove the main-request's HTTP_HEADER. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86707 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/http/http_request.c b/modules/http/http_request.c index 86102cd67d..cf71d3a713 100644 --- a/modules/http/http_request.c +++ b/modules/http/http_request.c @@ -1403,6 +1403,7 @@ static request_rec *internal_internal_redirect(const char *new_uri, request_rec *r) { int access_status; core_request_config *req_cfg; + ap_filter_t *fdel; request_rec *new = (request_rec *) apr_pcalloc(r->pool, sizeof(request_rec)); @@ -1462,6 +1463,19 @@ static request_rec *internal_internal_redirect(const char *new_uri, new->output_filters = r->connection->output_filters; new->input_filters = r->connection->input_filters; + ap_add_output_filter("HTTP_HEADER", NULL, new, new->connection); + + /* On an internal redirect, the redirect will take care of the headers, + * so we have to remove the main-request's HTTP_HEADER filter + */ + fdel = r->output_filters; + while (fdel) { + if (!strcmp(fdel->frec->name, "HTTP_HEADER")) { + ap_remove_output_filter(fdel); + break; + } + fdel = fdel->next; + } apr_table_setn(new->subprocess_env, "REDIRECT_STATUS", apr_psprintf(r->pool, "%d", r->status));