Commit 55a9fdd4 authored by Ruediger Pluem's avatar Ruediger Pluem
Browse files

Merge r425787 from trunk:

* Remove all filters that are before the cache_out filter. This ensures
  that we kick off the filter stack with our cache_out filter being the
  first in the chain. This make sense because we want to restore things
  in the same manner as we saved them.
  There may be filters before our cache_out filter, because

  1. We call ap_set_content_type during cache_select. This causes
     Content-Type specific filters to be added.
  2. We call the insert_filter hook. This causes filters e.g. like
     the ones set with SetOutputFilter to be added.

PR: 40090

Submitted by: rpluem
Reviewed by: rpluem, wrowe, jerenkrantz


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@538868 13f79535-47bb-0310-9956-ffa450edef68
parent e76e1135
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.5
  *) mod_cache: While serving a cached entity ensure that filters that have
     been applied to this cached entity before saving it to the cache are not
     applied again. PR 40090. [Ruediger Pluem]
  *) mod_cache: Correctly cache objects whose URL query string has been
     modified by mod_rewrite. PR 40805. [Ruediger Pluem]
+0 −10
Original line number Diff line number Diff line
@@ -105,16 +105,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
     http://svn.apache.org/viewvc?view=rev&rev=520733
     +1: wrowe, rpluem, niq

   * mod_cache: While serving a cached entity ensure that filters that have
     been applied to this cached entity before saving it to the cache are not
     applied again.
        PR: 40090
     Trunk version of patch:
       http://svn.apache.org/viewvc?rev=425787&view=rev
     2.2.x version of patch:
       Trunk version works
     +1: rpluem, wrowe, jerenkrantz

PATCHES PROPOSED TO BACKPORT FROM TRUNK:

    * ApacheMonitor: Fix Windows Vista detection.
+23 −4
Original line number Diff line number Diff line
@@ -56,6 +56,8 @@ static int cache_url_handler(request_rec *r, int lookup)
    cache_request_rec *cache;
    cache_server_conf *conf;
    apr_bucket_brigade *out;
    ap_filter_t *next;
    ap_filter_rec_t *cache_out_handle;

    /* Delay initialization until we know we are handling a GET */
    if (r->method_number != M_GET) {
@@ -213,12 +215,29 @@ static int cache_url_handler(request_rec *r, int lookup)
     * or not.
     */
    if (r->main) {
        ap_add_output_filter_handle(cache_out_subreq_filter_handle, NULL,
                                    r, r->connection);
        cache_out_handle = cache_out_subreq_filter_handle;
    }
    else {
        ap_add_output_filter_handle(cache_out_filter_handle, NULL,
                                    r, r->connection);
        cache_out_handle = cache_out_filter_handle;
    }
    ap_add_output_filter_handle(cache_out_handle, NULL, r, r->connection);

    /*
     * Remove all filters that are before the cache_out filter. This ensures
     * that we kick off the filter stack with our cache_out filter being the
     * first in the chain. This make sense because we want to restore things
     * in the same manner as we saved them.
     * There may be filters before our cache_out filter, because
     *
     * 1. We call ap_set_content_type during cache_select. This causes
     *    Content-Type specific filters to be added.
     * 2. We call the insert_filter hook. This causes filters e.g. like
     *    the ones set with SetOutputFilter to be added.
     */
    next = r->output_filters;
    while (next && (next->frec != cache_out_handle)) {
        ap_remove_output_filter(next);
        next = next->next;
    }

    /* kick off the filter stack */