From: Ryan Bloom Date: Tue, 24 Oct 2000 16:57:53 +0000 (+0000) Subject: Always send the EOS on the correct request. Basically, we call X-Git-Tag: APACHE_2_0_ALPHA_8~252 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=049e0207820ba26b003ed5b8fc2a19888ff7fdc3;p=apache Always send the EOS on the correct request. Basically, we call ap_finalize_request_protocol on the main request, then we find the last internally re-directed request, and send the EOS on that request. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86735 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/http/http_protocol.c b/modules/http/http_protocol.c index 32b17db933..7c63305f7b 100644 --- a/modules/http/http_protocol.c +++ b/modules/http/http_protocol.c @@ -2331,6 +2331,9 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_bu */ AP_DECLARE(void) ap_finalize_request_protocol(request_rec *r) { + while (r->next) { + r = r->next; + } /* tell the filter chain there is no more content coming */ if (!r->eos_sent) { end_output_stream(r); diff --git a/modules/http/http_request.c b/modules/http/http_request.c index cf71d3a713..7ab2f76ce2 100644 --- a/modules/http/http_request.c +++ b/modules/http/http_request.c @@ -1403,7 +1403,6 @@ 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)); @@ -1465,18 +1464,6 @@ static request_rec *internal_internal_redirect(const char *new_uri, 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));