From 7bb2bf1e65fd37bc9b06a18a1132ed4ac6798b11 Mon Sep 17 00:00:00 2001 From: Rainer Jung Date: Tue, 19 Jun 2018 22:40:19 +0000 Subject: [PATCH] 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 --- modules/cache/mod_cache.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/cache/mod_cache.c b/modules/cache/mod_cache.c index 5cf04b966f..fad3df273c 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 -- 2.50.1