From: Justin Erenkrantz Date: Thu, 17 May 2007 16:20:06 +0000 (+0000) Subject: mod_disk_cache: When renegotiating an already cached Vary'd response, do not X-Git-Tag: 2.3.0~1806 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9b5dff0669d3a5a4709280a938a71a1758bbb8da;p=apache mod_disk_cache: When renegotiating an already cached Vary'd response, do not let us later throw away the renegotiated content due to a name mismatch. We do not need to update the ->name field just before writing the headers as the computed ->name on open and create is sufficient. Updating ->name here is essentially a no-op - except in the case of Vary where the key has internally changed (to account for the Vary prefix), but the original name has not. However, writing the Vary'd-accounted key means that when we read the cache next that we will error out and disregard the just renegotiated response and fetch the content all over again - oops! (This is largely a case where I think we may have overthought ourselves; hence the explanation is here in the commit rather than in the file itself.) * modules/cache/mod_disk_cache.c (store_headers): The originally opened ->name is sufficient. * CHANGES: Combined with r538992, note that renegotiation for Vary's seem to work far better. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@538997 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 3e07455b78..7835948d09 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.3.0 [Remove entries to the current 2.0 and 2.2 section below, when backported] + *) mod_disk_cache: Allow Vary'd responses to be refreshed properly. + [Justin Erenkrantz] + *) mod_cache: Allow caching of requests with query arguments when Cache-Control max-age is explicitly specified. [Justin Erenkrantz] diff --git a/modules/cache/mod_disk_cache.c b/modules/cache/mod_disk_cache.c index cb9047071d..f1a34d51e5 100644 --- a/modules/cache/mod_disk_cache.c +++ b/modules/cache/mod_disk_cache.c @@ -903,8 +903,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;