]> granicus.if.org Git - apache/commitdiff
mod_cache: Per RFC 7234 section 5.3 an invalid
authorRainer Jung <rjung@apache.org>
Tue, 19 Jun 2018 22:40:19 +0000 (22:40 +0000)
committerRainer Jung <rjung@apache.org>
Tue, 19 Jun 2018 22:40:19 +0000 (22:40 +0000)
Expires header value must be interpreted as a
time in the past. So apply the logic concerning
"CacheStoreExpired" and "max-age" and "s-maxage"
handling, which we are already using for a valid
Expires header containing a time in the past,
also to the case of an invalid Expires header.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1833876 13f79535-47bb-0310-9956-ffa450edef68

modules/cache/mod_cache.c

index 5cf04b966f7cda4fb4af0d7035935262c2cd830a..fad3df273c92ea12fcb13260526eb9234ce8c9dc 100644 (file)
@@ -1040,8 +1040,11 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in)
     if (reason) {
         /* noop */
     }
-    else if (exps != NULL && exp == APR_DATE_BAD) {
-        /* if a broken Expires header is present, don't cache it */
+    else if (!control.s_maxage && !control.max_age && !dconf->store_expired
+             && exps != NULL && exp == APR_DATE_BAD) {
+        /* if a broken Expires header is present, don't cache it
+         * Unless CC: s-maxage or max-age is present
+         */
         reason = apr_pstrcat(p, "Broken expires header: ", exps, NULL);
     }
     else if (!control.s_maxage && !control.max_age