From 8ae3462a68965a3ae1c6a9019b74b3298f1427b7 Mon Sep 17 00:00:00 2001 From: Thomas Porzelt Date: Sat, 4 Jul 2009 21:04:27 +0200 Subject: [PATCH] [mod_expire] Fix wrong max-age with 'modification' --- src/modules/mod_expire.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modules/mod_expire.c b/src/modules/mod_expire.c index 2dcadfd..9a026db 100644 --- a/src/modules/mod_expire.c +++ b/src/modules/mod_expire.c @@ -77,9 +77,11 @@ static handler_t expire(vrequest *vr, gpointer param, gpointer *context) { struct tm tm; time_t date; guint len; + gint max_age; GString *date_str = vr->wrk->tmp_str; expire_rule *rule = param; guint num = ((expire_rule*)param)->num; + time_t now = (time_t)CUR_TS(vr->wrk); UNUSED(context); @@ -98,7 +100,8 @@ static handler_t expire(vrequest *vr, gpointer param, gpointer *context) { if (rule->base == EXPIRE_ACCESS) { - date = (time_t) (CUR_TS(vr->wrk) + num); + date = now + num; + max_age = num; } else { /* modification */ struct stat st; @@ -111,6 +114,7 @@ static handler_t expire(vrequest *vr, gpointer param, gpointer *context) { } date = st.st_mtime + num; + max_age = num - (now - st.st_mtime); } /* format date */ @@ -129,7 +133,7 @@ static handler_t expire(vrequest *vr, gpointer param, gpointer *context) { http_header_overwrite(vr->response.headers, CONST_STR_LEN("Expires"), GSTR_LEN(date_str)); g_string_truncate(date_str, 0); g_string_append_len(date_str, CONST_STR_LEN("max-age=")); - l_g_string_append_int(date_str, num); + l_g_string_append_int(date_str, max_age); http_header_overwrite(vr->response.headers, CONST_STR_LEN("Cache-Control"), GSTR_LEN(date_str)); return HANDLER_GO_ON;