Commit 81b95d64 authored by Justin Erenkrantz's avatar Justin Erenkrantz
Browse files

mod_disk_cache: Allow Vary'd content to be refreshed properly.

(Backport of r538992, r538997, r539054)

Reviewed by: jerenkrantz, fielding, rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@539279 13f79535-47bb-0310-9956-ffa450edef68
parent 024fa8a3
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.5
  *) mod_disk_cache: Allow Vary'd responses to be refreshed properly.
     [Justin Erenkrantz]
  *) mod_proxy: Print the correct error message for erroneous configured
     ProxyPass directives. PR 40439. [serai lans-tv.com]
+9 −6
Original line number Diff line number Diff line
@@ -403,10 +403,6 @@ static int open_entity(cache_handle_t *h, request_rec *r, const char *key)
        len = sizeof(expire);
        apr_file_read_full(dobj->hfd, &expire, len, &len);

        if (expire < r->request_time) {
            return DECLINED;
        }

        varray = apr_array_make(r->pool, 5, sizeof(char*));
        rc = read_array(r, varray, dobj->hfd);
        if (rc != APR_SUCCESS) {
@@ -823,6 +819,15 @@ static apr_status_t store_headers(cache_handle_t *h, request_rec *r, cache_info
            apr_array_header_t* varray;
            apr_uint32_t format = VARY_FORMAT_VERSION;

            /* If we were initially opened as a vary format, rollback
             * that internal state for the moment so we can recreate the
             * vary format hints in the appropriate directory.
             */
            if (dobj->prefix) {
                dobj->hdrsfile = dobj->prefix;
                dobj->prefix = NULL;
            }

            mkdir_structure(conf, dobj->hdrsfile, r->pool);

            rv = apr_file_mktemp(&dobj->tfd, dobj->tempfile,
@@ -875,8 +880,6 @@ static apr_status_t store_headers(cache_handle_t *h, request_rec *r, cache_info
        return rv;
    }

    dobj->name = h->cache_obj->key;

    disk_info.format = DISK_FORMAT_VERSION;
    disk_info.date = info->date;
    disk_info.expire = info->expire;