From c8b1ad8f55c8d45b48325d47b54a37d8f504eaa6 Mon Sep 17 00:00:00 2001 From: Graham Leggett <minfrin@apache.org> Date: Sun, 13 Oct 2013 13:07:19 +0000 Subject: [PATCH] mod_session: Reset the max-age on session save. PR 47476. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1531683 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ modules/session/mod_session.c | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 0c583f9e14..5914b5123d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_session: Reset the max-age on session save. PR 47476. [Alexey + Varlamov <alexey.v.varlamov gmail com>] + *) mod_session: After parsing the value of the header specified by the SessionHeader directive, remove the value from the response. PR 55279. [Graham Leggett] diff --git a/modules/session/mod_session.c b/modules/session/mod_session.c index 5a8ca4d8cb..89c80747cf 100644 --- a/modules/session/mod_session.c +++ b/modules/session/mod_session.c @@ -144,9 +144,11 @@ static apr_status_t ap_session_load(request_rec * r, session_rec ** z) } } - /* make sure the expiry is set, if present */ - if (!zz->expiry && dconf->maxage) { - zz->expiry = now + dconf->maxage * APR_USEC_PER_SEC; + /* make sure the expiry and maxage are set, if present */ + if (dconf->maxage) { + if (!zz->expiry) { + zz->expiry = now + dconf->maxage * APR_USEC_PER_SEC; + } zz->maxage = dconf->maxage; } @@ -194,6 +196,11 @@ static apr_status_t ap_session_save(request_rec * r, session_rec * z) z->maxage = dconf->maxage; } + /* reset the expiry before saving if present */ + if (z->dirty && z->maxage) { + z->expiry = now + z->maxage * APR_USEC_PER_SEC; + } + /* encode the session */ rv = ap_run_session_encode(r, z); if (OK != rv) { -- 2.40.0