2
0
Fork 0

[mod_expire] Fix wrong max-age with 'modification'

personal/stbuehler/wip
Thomas Porzelt 2009-07-04 21:04:27 +02:00
parent 2cffeb7401
commit 8ae3462a68
1 changed files with 6 additions and 2 deletions

View File

@ -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;