From: Doug MacEachern Date: Wed, 27 Mar 2002 23:19:08 +0000 (+0000) Subject: break out SSL_CTX session initialization into X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78885869eaace831be661a886e84d2d834d13505;p=thirdparty%2Fapache%2Fhttpd.git break out SSL_CTX session initialization into ssl_init_session_cache_ctx function git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl@94242 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/ssl_engine_init.c b/ssl_engine_init.c index db5e2890231..da9d40d41c4 100644 --- a/ssl_engine_init.c +++ b/ssl_engine_init.c @@ -435,6 +435,30 @@ static SSL_CTX *ssl_init_ctx(server_rec *s, return ctx; } +static void ssl_init_session_cache_ctx(server_rec *s, + apr_pool_t *p, + apr_pool_t *ptemp, + SSLSrvConfigRec *sc) +{ + SSL_CTX *ctx = sc->pSSLCtx; + SSLModConfigRec *mc = myModConfig(s); + long cache_mode = SSL_SESS_CACHE_OFF; + + if (mc->nSessionCacheMode != SSL_SCMODE_NONE) { + /* SSL_SESS_CACHE_NO_INTERNAL_LOOKUP will force OpenSSL + * to ignore process local-caching and + * to always get/set/delete sessions using mod_ssl's callbacks. + */ + cache_mode = SSL_SESS_CACHE_SERVER|SSL_SESS_CACHE_NO_INTERNAL_LOOKUP; + } + + SSL_CTX_set_session_cache_mode(ctx, cache_mode); + + SSL_CTX_sess_set_new_cb(ctx, ssl_callback_NewSessionCacheEntry); + SSL_CTX_sess_set_get_cb(ctx, ssl_callback_GetSessionCacheEntry); + SSL_CTX_sess_set_remove_cb(ctx, ssl_callback_DelSessionCacheEntry); +} + static void ssl_init_verify(server_rec *s, apr_pool_t *p, apr_pool_t *ptemp, @@ -534,7 +558,6 @@ void ssl_init_ConfigureServer(server_rec *s, BOOL ok = FALSE; int is_ca, pathlen; int i, n; - long cache_mode; /* * Create the server host:port string because we need it a lot @@ -567,25 +590,10 @@ void ssl_init_ConfigureServer(server_rec *s, ctx = ssl_init_ctx(s, p, ptemp, sc); - if (mc->nSessionCacheMode == SSL_SCMODE_NONE) { - cache_mode = SSL_SESS_CACHE_OFF; - } - else { - /* SSL_SESS_CACHE_NO_INTERNAL_LOOKUP will force OpenSSL - * to ignore process local-caching and - * to always get/set/delete sessions using mod_ssl's callbacks. - */ - cache_mode = SSL_SESS_CACHE_SERVER|SSL_SESS_CACHE_NO_INTERNAL_LOOKUP; - } - - SSL_CTX_set_session_cache_mode(ctx, cache_mode); + ssl_init_session_cache_ctx(s, p, ptemp, sc); ssl_init_verify(s, p, ptemp, sc); - SSL_CTX_sess_set_new_cb(ctx, ssl_callback_NewSessionCacheEntry); - SSL_CTX_sess_set_get_cb(ctx, ssl_callback_GetSessionCacheEntry); - SSL_CTX_sess_set_remove_cb(ctx, ssl_callback_DelSessionCacheEntry); - SSL_CTX_set_tmp_rsa_callback(ctx, ssl_callback_TmpRSA); SSL_CTX_set_tmp_dh_callback(ctx, ssl_callback_TmpDH);