]> granicus.if.org Git - apache/commitdiff
mod_session_dbd: follow up to r1686122.
authorYann Ylavic <ylavic@apache.org>
Tue, 23 Jun 2015 10:54:15 +0000 (10:54 +0000)
committerYann Ylavic <ylavic@apache.org>
Tue, 23 Jun 2015 10:54:15 +0000 (10:54 +0000)
DBD entries should also have request lifetime.
Proposed by: Jacob Champion <jacob.champion ni.com>
Reviewed by: ylavic

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1687021 13f79535-47bb-0310-9956-ffa450edef68

modules/session/mod_session_dbd.c

index af2dc2d09efec6f3f004c9d699dd1a14fce14dc9..0f473ffb0285b2e5b5e9e5a2f93cf2037a37a71b 100644 (file)
@@ -94,8 +94,11 @@ static apr_status_t dbd_init(request_rec *r, const char *query, ap_dbd_t **dbdp,
 
 /**
  * Load the session by the key specified.
+ *
+ * The session value is allocated using the passed apr_pool_t.
  */
-static apr_status_t dbd_load(request_rec * r, const char *key, const char **val)
+static apr_status_t dbd_load(request_rec * r, apr_pool_t *pool,
+                                                        const char *key, const char **val)
 {
 
     apr_status_t rv;
@@ -138,7 +141,7 @@ static apr_status_t dbd_load(request_rec * r, const char *key, const char **val)
             return APR_EGENERAL;
         }
         if (*val == NULL) {
-            *val = apr_pstrdup(r->pool,
+            *val = apr_pstrdup(pool,
                                apr_dbd_get_entry(dbd->driver, row, 0));
         }
         /* we can't break out here or row won't get cleaned up */
@@ -204,7 +207,7 @@ static apr_status_t session_dbd_load(request_rec * r, session_rec ** z)
         /* load an RFC2109 or RFC2965 compliant cookie */
         ap_cookie_read(r, name, &key, conf->remove);
         if (key) {
-            ret = dbd_load(r, key, &val);
+            ret = dbd_load(r, m->pool, key, &val);
             if (ret != APR_SUCCESS) {
                 return ret;
             }
@@ -215,7 +218,7 @@ static apr_status_t session_dbd_load(request_rec * r, session_rec ** z)
     /* load named session */
     else if (conf->peruser) {
         if (r->user) {
-            ret = dbd_load(r, r->user, &val);
+            ret = dbd_load(r, m->pool, r->user, &val);
             if (ret != APR_SUCCESS) {
                 return ret;
             }