From: Rainer Jung Date: Tue, 19 Jun 2018 22:40:19 +0000 (+0000) Subject: mod_cache: Per RFC 7234 section 5.3 an invalid X-Git-Tag: 2.5.0-alpha2-ci-test-only~2549 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7bb2bf1e65fd37bc9b06a18a1132ed4ac6798b11;p=thirdparty%2Fapache%2Fhttpd.git mod_cache: Per RFC 7234 section 5.3 an invalid 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 --- diff --git a/modules/cache/mod_cache.c b/modules/cache/mod_cache.c index 5cf04b966f7..fad3df273c9 100644 --- a/modules/cache/mod_cache.c +++ b/modules/cache/mod_cache.c @@ -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