From: Paul Querna Date: Fri, 8 Jun 2007 20:04:34 +0000 (+0000) Subject: Propogate the conn_rec::pool down to ssl_scache_retrieve so that the memcache layer... X-Git-Tag: 2.3.0~1785 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6995a0dd6ab82aa00b36e864d172ed87dcb52503;p=apache Propogate the conn_rec::pool down to ssl_scache_retrieve so that the memcache layer doesn't 'leak' into a long lived pool for temp allocations. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@545608 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/ssl/ssl_engine_kernel.c b/modules/ssl/ssl_engine_kernel.c index 045c4a38a7..c03ebb8289 100644 --- a/modules/ssl/ssl_engine_kernel.c +++ b/modules/ssl/ssl_engine_kernel.c @@ -1670,7 +1670,7 @@ SSL_SESSION *ssl_callback_GetSessionCacheEntry(SSL *ssl, /* * Try to retrieve the SSL_SESSION from the inter-process cache */ - session = ssl_scache_retrieve(s, id, idlen); + session = ssl_scache_retrieve(s, id, idlen, conn->pool); ssl_session_log(s, "GET", id, idlen, session ? "FOUND" : "MISSED", diff --git a/modules/ssl/ssl_private.h b/modules/ssl/ssl_private.h index 037dfdbaa3..266b542a2e 100644 --- a/modules/ssl/ssl_private.h +++ b/modules/ssl/ssl_private.h @@ -576,7 +576,7 @@ void ssl_scache_init(server_rec *, apr_pool_t *); void ssl_scache_status_register(apr_pool_t *p); void ssl_scache_kill(server_rec *); BOOL ssl_scache_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *); -SSL_SESSION *ssl_scache_retrieve(server_rec *, UCHAR *, int); +SSL_SESSION *ssl_scache_retrieve(server_rec *, UCHAR *, int, apr_pool_t *); void ssl_scache_remove(server_rec *, UCHAR *, int); char *ssl_scache_id2sz(UCHAR *, int); @@ -605,7 +605,7 @@ void ssl_scache_dc_status(request_rec *r, int flags, apr_pool_t *pool); void ssl_scache_mc_init(server_rec *, apr_pool_t *); void ssl_scache_mc_kill(server_rec *); BOOL ssl_scache_mc_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *); -SSL_SESSION *ssl_scache_mc_retrieve(server_rec *, UCHAR *, int); +SSL_SESSION *ssl_scache_mc_retrieve(server_rec *, UCHAR *, int, apr_pool_t *); void ssl_scache_mc_remove(server_rec *, UCHAR *, int); void ssl_scache_mc_status(request_rec *r, int flags, apr_pool_t *pool); #endif diff --git a/modules/ssl/ssl_scache.c b/modules/ssl/ssl_scache.c index e01e1d1bed..cf93094323 100644 --- a/modules/ssl/ssl_scache.c +++ b/modules/ssl/ssl_scache.c @@ -116,7 +116,8 @@ BOOL ssl_scache_store(server_rec *s, UCHAR *id, int idlen, time_t expiry, SSL_SE return rv; } -SSL_SESSION *ssl_scache_retrieve(server_rec *s, UCHAR *id, int idlen) +SSL_SESSION *ssl_scache_retrieve(server_rec *s, UCHAR *id, int idlen, + apr_pool_t *p) { SSLModConfigRec *mc = myModConfig(s); SSL_SESSION *sess = NULL; @@ -131,7 +132,7 @@ SSL_SESSION *ssl_scache_retrieve(server_rec *s, UCHAR *id, int idlen) #endif #ifdef HAVE_SSL_CACHE_MEMCACHE else if (mc->nSessionCacheMode == SSL_SCMODE_MC) - sess = ssl_scache_mc_retrieve(s, id, idlen); + sess = ssl_scache_mc_retrieve(s, id, idlen, p); #endif return sess; } diff --git a/modules/ssl/ssl_scache_memcache.c b/modules/ssl/ssl_scache_memcache.c index 8dc6b0e2b7..60b9a688e8 100644 --- a/modules/ssl/ssl_scache_memcache.c +++ b/modules/ssl/ssl_scache_memcache.c @@ -201,7 +201,8 @@ BOOL ssl_scache_mc_store(server_rec *s, UCHAR *id, int idlen, return TRUE; } -SSL_SESSION *ssl_scache_mc_retrieve(server_rec *s, UCHAR *id, int idlen) +SSL_SESSION *ssl_scache_mc_retrieve(server_rec *s, UCHAR *id, int idlen, + apr_pool_t *p) { SSL_SESSION *pSession; MODSSL_D2I_SSL_SESSION_CONST unsigned char *pder; @@ -219,7 +220,7 @@ SSL_SESSION *ssl_scache_mc_retrieve(server_rec *s, UCHAR *id, int idlen) return NULL; } - rv = apr_memcache_getp(memctxt, mc->pPool, strkey, + rv = apr_memcache_getp(memctxt, p, strkey, (char**)&pder, &der_len, NULL); if (rv == APR_NOTFOUND) {