httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From minf...@apache.org
Subject svn commit: r1487129 - in /httpd/httpd/branches/2.4.x: ./ CHANGES STATUS modules/cache/mod_cache.c
Date Tue, 28 May 2013 21:29:04 GMT
Author: minfrin
Date: Tue May 28 21:29:03 2013
New Revision: 1487129

URL: http://svn.apache.org/r1487129
Log:
mod_cache: Ensure that we don't attempt to replace a cached response
with an older response as per RFC2616 13.12.

trunk patch: http://svn.apache.org/r1479966
2.4.x patch: http://people.apache.org/~minfrin/httpd-mod_cache-olderdate2.4.patch

Submitted by: minfrin
Reviewed by: jim, wrowe

Modified:
    httpd/httpd/branches/2.4.x/   (props changed)
    httpd/httpd/branches/2.4.x/CHANGES
    httpd/httpd/branches/2.4.x/STATUS
    httpd/httpd/branches/2.4.x/modules/cache/mod_cache.c

Propchange: httpd/httpd/branches/2.4.x/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk:r1479966

Modified: httpd/httpd/branches/2.4.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/CHANGES?rev=1487129&r1=1487128&r2=1487129&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.4.x/CHANGES [utf-8] Tue May 28 21:29:03 2013
@@ -2,6 +2,10 @@
 
 Changes with Apache 2.4.5
 
+  *) mod_cache: Ensure that we don't attempt to replace a cached response
+     with an older response as per RFC2616 13.12. [Graham Leggett, Co-Advisor
+     <coad measurement-factory.com>]
+
   *) core, mod_cache: Ensure RFC2616 compliance in ap_meets_conditions()
      with weak validation combined with If-Range and Range headers. Break
      out explicit conditional header checks to be useable elsewhere in the

Modified: httpd/httpd/branches/2.4.x/STATUS
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/STATUS?rev=1487129&r1=1487128&r2=1487129&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/STATUS (original)
+++ httpd/httpd/branches/2.4.x/STATUS Tue May 28 21:29:03 2013
@@ -90,12 +90,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
  
-    * mod_cache: Ensure that we don't attempt to replace a cached response
-      with an older response as per RFC2616 13.12.
-      trunk patch: http://svn.apache.org/r1479966
-      2.4.x patch: http://people.apache.org/~minfrin/httpd-mod_cache-olderdate2.4.patch
-      +1: minfrin, jim, wrowe
-
     * mod_cache: If a 304 response indicates an entity not currently cached, then
       the cache MUST disregard the response and repeat the request without the 
       conditional.

Modified: httpd/httpd/branches/2.4.x/modules/cache/mod_cache.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/cache/mod_cache.c?rev=1487129&r1=1487128&r2=1487129&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/modules/cache/mod_cache.c (original)
+++ httpd/httpd/branches/2.4.x/modules/cache/mod_cache.c Tue May 28 21:29:03 2013
@@ -1089,6 +1089,25 @@ static apr_status_t cache_save_filter(ap
         /* or we've been asked not to cache it above */
         reason = "r->no_cache present";
     }
+    else if (cache->stale_handle
+            && APR_DATE_BAD
+                    != (date = apr_date_parse_http(
+                            apr_table_get(r->headers_out, "Date")))
+            && date < cache->stale_handle->cache_obj->info.date) {
+
+        /**
+         * 13.12 Cache Replacement:
+         *
+         * Note: a new response that has an older Date header value than
+         * existing cached responses is not cacheable.
+         */
+        reason = "updated entity is older than cached entity";
+
+        /* while this response is not cacheable, the previous response still is */
+        ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00770)
+                "cache: Removing CACHE_REMOVE_URL filter.");
+        ap_remove_output_filter(cache->remove_url_filter);
+    }
     else if (r->status == HTTP_NOT_MODIFIED && cache->stale_handle) {
         apr_table_t *left = cache->stale_handle->resp_hdrs;
         apr_table_t *right = r->headers_out;



Mime
View raw message