summaryrefslogtreecommitdiff
path: root/modules/http
diff options
context:
space:
mode:
authorPhilip M. Gollucci <pgollucci@apache.org>2008-12-10 19:18:59 +0000
committerPhilip M. Gollucci <pgollucci@apache.org>2008-12-10 19:18:59 +0000
commita736c6c16d509d8489c4bd39333cfdecb61a932c (patch)
tree5fdcd8a19c5a8e64fc479e20d67020d3746b6da0 /modules/http
parent1ddd51491ff30d5c92cafcd115bfc33cd47201fc (diff)
parenta550230f1a158ec82f519b3ddf3d29dcf5d8d0d2 (diff)
downloadhttpd-apreq-integration.tar.gz
sync with trunk before I start mucking in the waters themselvesapreq-integration
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/apreq-integration@725390 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/http')
-rw-r--r--modules/http/http_request.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/modules/http/http_request.c b/modules/http/http_request.c
index fed313bee9..4da05d2ba0 100644
--- a/modules/http/http_request.c
+++ b/modules/http/http_request.c
@@ -518,6 +518,15 @@ AP_DECLARE(void) ap_internal_fast_redirect(request_rec *rr, request_rec *r)
r->output_filters = rr->output_filters;
r->input_filters = rr->input_filters;
+ /* If any filters pointed at the now-defunct rr, we must point them
+ * at our "new" instance of r. In particular, some of rr's structures
+ * will now be bogus (say rr->headers_out). If a filter tried to modify
+ * their f->r structure when it is pointing to rr, the real request_rec
+ * will not get updated. Fix that here.
+ */
+ update_r_in_filters(r->input_filters, rr, r);
+ update_r_in_filters(r->output_filters, rr, r);
+
if (r->main) {
ap_add_output_filter_handle(ap_subreq_core_filter_handle,
NULL, r, r->connection);
@@ -541,20 +550,8 @@ AP_DECLARE(void) ap_internal_fast_redirect(request_rec *rr, request_rec *r)
}
if (next && (next->frec == ap_subreq_core_filter_handle)) {
ap_remove_output_filter(next);
- if (next == r->output_filters) {
- r->output_filters = r->output_filters->next;
- }
}
}
-
- /* If any filters pointed at the now-defunct rr, we must point them
- * at our "new" instance of r. In particular, some of rr's structures
- * will now be bogus (say rr->headers_out). If a filter tried to modify
- * their f->r structure when it is pointing to rr, the real request_rec
- * will not get updated. Fix that here.
- */
- update_r_in_filters(r->input_filters, rr, r);
- update_r_in_filters(r->output_filters, rr, r);
}
AP_DECLARE(void) ap_internal_redirect(const char *new_uri, request_rec *r)