mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
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
This commit is contained in:
@@ -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));
|
||||
|
Reference in New Issue
Block a user