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: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6995a0dd6ab82aa00b36e864d172ed87dcb52503;p=thirdparty%2Fapache%2Fhttpd.git 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 045c4a38a70..c03ebb82899 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 037dfdbaa32..266b542a2e8 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 e01e1d1bed1..cf93094323c 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 8dc6b0e2b76..60b9a688e82 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) {