You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2014/04/30 16:33:22 UTC
svn commit: r1591316 - in /httpd/httpd/trunk: CHANGES
modules/cache/mod_cache.c
Author: ylavic
Date: Wed Apr 30 14:33:21 2014
New Revision: 1591316
URL: http://svn.apache.org/r1591316
Log:
Revert r1591312 (again) to commit the 2 fixes separately.
Modified:
httpd/httpd/trunk/CHANGES
httpd/httpd/trunk/modules/cache/mod_cache.c
Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1591316&r1=1591315&r2=1591316&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Wed Apr 30 14:33:21 2014
@@ -1,9 +1,6 @@
-*- coding: utf-8 -*-
Changes with Apache 2.5.0
- *) mod_cache: Don't add cached/revalidated entity headers to a 304 response.
- PR 55547. [Yann Ylavic]
-
*) mod_cache: Retry unconditional request with the full URL (including the
query-string) when the origin server's 304 response does not match the
conditions used to revalidate the stale entry. [Yann Ylavic].
Modified: httpd/httpd/trunk/modules/cache/mod_cache.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/cache/mod_cache.c?rev=1591316&r1=1591315&r2=1591316&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/cache/mod_cache.c (original)
+++ httpd/httpd/trunk/modules/cache/mod_cache.c Wed Apr 30 14:33:21 2014
@@ -36,22 +36,6 @@ static ap_filter_rec_t *cache_out_subreq
static ap_filter_rec_t *cache_remove_url_filter_handle;
static ap_filter_rec_t *cache_invalidate_filter_handle;
-/**
- * Entity headers' names
- */
-static const char *MOD_CACHE_ENTITY_HEADERS[] = {
- "Allow",
- "Content-Encoding",
- "Content-Language",
- "Content-Length",
- "Content-Location",
- "Content-MD5",
- "Content-Range",
- "Content-Type",
- "Last-Modified",
- NULL
-};
-
/*
* CACHE handler
* -------------
@@ -818,7 +802,7 @@ static apr_status_t cache_save_filter(ap
apr_time_t exp, date, lastmod, now;
apr_off_t size = -1;
cache_info *info = NULL;
- const char *reason, **eh;
+ const char *reason;
apr_pool_t *p;
apr_bucket *e;
apr_table_t *headers;
@@ -1166,9 +1150,14 @@ static apr_status_t cache_save_filter(ap
* inconsistencies between cached entity-bodies and updated headers.
*/
if (r->status == HTTP_NOT_MODIFIED) {
- for (eh = MOD_CACHE_ENTITY_HEADERS; *eh; ++eh) {
- apr_table_unset(r->headers_out, *eh);
- }
+ apr_table_unset(r->headers_out, "Allow");
+ apr_table_unset(r->headers_out, "Content-Encoding");
+ apr_table_unset(r->headers_out, "Content-Language");
+ apr_table_unset(r->headers_out, "Content-Length");
+ apr_table_unset(r->headers_out, "Content-MD5");
+ apr_table_unset(r->headers_out, "Content-Range");
+ apr_table_unset(r->headers_out, "Content-Type");
+ apr_table_unset(r->headers_out, "Last-Modified");
}
/* Hold the phone. Some servers might allow us to cache a 2xx, but
@@ -1452,14 +1441,10 @@ static apr_status_t cache_save_filter(ap
* the cached headers.
*
* However, before doing that, we need to first merge in
- * err_headers_out (note that store_headers() below already selects
- * the cacheable only headers using ap_cache_cacheable_headers_out(),
- * here we want to keep the original headers in r->headers_out and
- * forward all of them to the client, including non-cacheable ones).
- */
- r->headers_out = apr_table_overlay(r->pool, r->headers_out,
- r->err_headers_out);
- apr_table_clear(r->err_headers_out);
+ * err_headers_out and we also need to strip any hop-by-hop
+ * headers that might have snuck in.
+ */
+ r->headers_out = ap_cache_cacheable_headers_out(r);
/* Merge in our cached headers. However, keep any updated values. */
/* take output, overlay on top of cached */
@@ -1509,13 +1494,6 @@ static apr_status_t cache_save_filter(ap
if (status != OK) {
r->status = status;
- /* Strip the entity headers merged from the cached headers before
- * updating the entry (see cache_accept_headers() above).
- */
- for (eh = MOD_CACHE_ENTITY_HEADERS; *eh; ++eh) {
- apr_table_unset(r->headers_out, *eh);
- }
-
bkt = apr_bucket_flush_create(bb->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, bkt);
}