]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
- revert my patch (r1.155) since it produces regressions.
authorAndré Malo <nd@apache.org>
Thu, 29 May 2003 15:07:12 +0000 (15:07 +0000)
committerAndré Malo <nd@apache.org>
Thu, 29 May 2003 15:07:12 +0000 (15:07 +0000)
- add a note to STATUS that we don't forget the thing.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100086 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
modules/http/http_request.c

diff --git a/CHANGES b/CHANGES
index 464b4a6b838efbe67dca5149d0d2fc3513f62845..5bf3e082414e6590ebfa80b1c02c54c74a660c0e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -32,9 +32,6 @@ Changes with Apache 2.1.0-dev
   *) Fix a compile failure with recent OpenSSL and picky compilers
      (e.g., OpenSSL 0.9.7a and xlc_r on AIX).  [Jeff Trawick]
 
-  *) Do not bypass output filters when redirecting subrequests internally.
-     PR 17629.  [André Malo]
-
   *) OpenSSL headers should be included as "openssl/ssl.h", and not rely on
      the INCLUDE path to be defined properly.
      PR 11310. [Geoff Thrope <geoff@geoffthorpe.net>]
diff --git a/STATUS b/STATUS
index 4438b9ae237e951aa9c50db62390201a3c9cba73..84fd137c630e88719570d48e5406933bffae8c02 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -1,5 +1,5 @@
 APACHE 2.1 STATUS:                                              -*-text-*-
-Last modified at [$Date: 2003/05/21 16:21:19 $]
+Last modified at [$Date: 2003/05/29 15:07:11 $]
 
 Release [NOTE that only Alpha/Beta releases occur in 2.1 development]:
 
@@ -104,6 +104,18 @@ CURRENT VOTES:
 
 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
 
+    * Filter stacks and subrequests, redirects and fast redirects.
+      There's at least one PR that suffers from the current unclean behaviour
+      (which lets the server send garbage): PR 17629
+      nd says: Every subrequest should get its own filter stack with the
+               subreq_core filter as bottom-most. That filter does two things:
+                 - swallow EOS buckets
+                 - redirect the data stream to the upper request's (rr->main)
+                   filter chain directly after the subrequest's starting
+                   point.
+               Once we have a clean solution, we can try to optimize
+               it, so that the server won't be slow down too much.
+
     * RFC 2616 violations.
       Closed PRs: 15857.
       Open PRs: 15852, 15859, 15861, 15864, 15865, 15866, 15868, 15869,
index ea2fca452c88c62c835b4d653a09cd50e43fa70d..8f8472ce9c11d34011267babdab78d8fafa3de14 100644 (file)
@@ -400,27 +400,17 @@ static request_rec *internal_internal_redirect(const char *new_uri,
     new->proto_output_filters  = r->proto_output_filters;
     new->proto_input_filters   = r->proto_input_filters;
 
-    if (new->main) {
-        new->output_filters = r->output_filters;
-        new->input_filters = r->input_filters;
+    new->output_filters  = new->proto_output_filters;
+    new->input_filters   = new->proto_input_filters;
 
+    if (new->main) {
         /* Add back the subrequest filter, which we lost when
          * we set output_filters to include only the protocol
          * output filters from the original request.
-         *
-         * XXX: This shouldn't be neccessary any longer, because the filter
-         * is still in place -- isn't it?
          */
         ap_add_output_filter_handle(ap_subreq_core_filter_handle,
                                     NULL, new, new->connection);
     }
-    else {
-        /* In subrequests we _must_ point to the complete upper request's
-         * filter chain, so skip the filters _only_ within the main request.
-         */
-        new->output_filters  = new->proto_output_filters;
-        new->input_filters   = new->proto_input_filters;
-    }
     
     update_r_in_filters(new->input_filters, r, new);
     update_r_in_filters(new->output_filters, r, new);
@@ -471,19 +461,10 @@ AP_DECLARE(void) ap_internal_fast_redirect(request_rec *rr, request_rec *r)
     r->subprocess_env = apr_table_overlay(r->pool, rr->subprocess_env,
                                           r->subprocess_env);
 
-    /* copy the filters _only_ within the main request. In subrequests
-     * we _must_ point to the upper requests' filter chain, so do not
-     * touch 'em!
-     */
-    if (!r->main) {
-        r->output_filters = rr->output_filters;
-        r->input_filters = rr->input_filters;
-    }
+    r->output_filters = rr->output_filters;
+    r->input_filters = rr->input_filters;
 
     if (r->main) {
-        /* XXX: This shouldn't be neccessary any longer, because the filter
-         * is still in place -- isn't it?
-         */
         ap_add_output_filter_handle(ap_subreq_core_filter_handle,
                                     NULL, r, r->connection);
     }