summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Erenkrantz <jerenkrantz@apache.org>2007-05-18 22:42:59 +0000
committerJustin Erenkrantz <jerenkrantz@apache.org>2007-05-18 22:42:59 +0000
commit3019f9a87b831d7552f5737bad8446fbc74e076d (patch)
tree51c85246d58d7fe2236423ff84200e50327ae7f6
parentcd208845d682123d3a39e19a4573e4da02d3a66e (diff)
downloadhttpd-3019f9a87b831d7552f5737bad8446fbc74e076d.tar.gz
mod_cache: Do not set Date or Expires when they are missing from the original
response or are invalid. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@539621 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--CHANGES3
-rw-r--r--modules/cache/mod_cache.c30
2 files changed, 6 insertions, 27 deletions
diff --git a/CHANGES b/CHANGES
index d362c14a82..7d94981d5b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,9 @@
Changes with Apache 2.3.0
[Remove entries to the current 2.0 and 2.2 section below, when backported]
+ *) mod_cache: Do not set Date or Expires when they are missing from
+ the original response or are invalid. [Justin Erenkrantz]
+
*) mod_cache: Correctly handle HEAD requests on expired cache content.
PR 41230. [Niklas Edmundsson]
diff --git a/modules/cache/mod_cache.c b/modules/cache/mod_cache.c
index 19afb35de5..9ab36ce873 100644
--- a/modules/cache/mod_cache.c
+++ b/modules/cache/mod_cache.c
@@ -318,7 +318,6 @@ static int cache_out_filter(ap_filter_t *f, apr_bucket_brigade *bb)
static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in)
{
int rv = !OK;
- int date_in_errhdr = 0;
request_rec *r = f->r;
cache_request_rec *cache;
cache_server_conf *conf;
@@ -653,10 +652,7 @@ static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in)
/* Read the date. Generate one if one is not supplied */
dates = apr_table_get(r->err_headers_out, "Date");
- if (dates != NULL) {
- date_in_errhdr = 1;
- }
- else {
+ if (dates == NULL) {
dates = apr_table_get(r->headers_out, "Date");
}
if (dates != NULL) {
@@ -668,25 +664,10 @@ static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in)
now = apr_time_now();
if (info->date == APR_DATE_BAD) { /* No, or bad date */
- char *dates;
/* no date header (or bad header)! */
- /* add one; N.B. use the time _now_ rather than when we were checking
- * the cache
- */
- if (date_in_errhdr == 1) {
- apr_table_unset(r->err_headers_out, "Date");
- }
- date = now;
- dates = apr_pcalloc(r->pool, MAX_STRING_LEN);
- apr_rfc822_date(dates, now);
- apr_table_set(r->headers_out, "Date", dates);
- ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
- "cache: Added date header");
- info->date = date;
- }
- else {
- date = info->date;
+ info->date = now;
}
+ date = info->date;
/* set response_time for HTTP/1.1 age calculations */
info->response_time = now;
@@ -714,7 +695,6 @@ static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in)
* expire date = date + defaultexpire
*/
if (exp == APR_DATE_BAD) {
- char expire_hdr[APR_RFC822_DATE_LEN];
char *max_age_val;
if (ap_cache_liststr(r->pool, cc_out, "max-age", &max_age_val) &&
@@ -751,13 +731,9 @@ static int cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in)
x = conf->maxex;
}
exp = date + x;
- apr_rfc822_date(expire_hdr, exp);
- apr_table_set(r->headers_out, "Expires", expire_hdr);
}
else {
exp = date + conf->defex;
- apr_rfc822_date(expire_hdr, exp);
- apr_table_set(r->headers_out, "Expires", expire_hdr);
}
}
info->expire = exp;