]> granicus.if.org Git - apache/commitdiff
break out SSL_CTX session initialization into
authorDoug MacEachern <dougm@apache.org>
Wed, 27 Mar 2002 23:19:08 +0000 (23:19 +0000)
committerDoug MacEachern <dougm@apache.org>
Wed, 27 Mar 2002 23:19:08 +0000 (23:19 +0000)
ssl_init_session_cache_ctx function

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

modules/ssl/ssl_engine_init.c

index db5e2890231cf1d29230cb3ae0d3ab0c4fca85be..da9d40d41c4f7e612e10f2c6abe9d92e8cc004db 100644 (file)
@@ -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);