summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrcritten <>2008-07-16 15:15:39 +0000
committerrcritten <>2008-07-16 15:15:39 +0000
commitd26e83ac8cecd0e9c29991cb9c673a4487f4ec81 (patch)
treecfb624def0b66adf13b37f297158adb6d5b33b6d
parent503b4dfb861a4d3c41936cc9252817b06d865b69 (diff)
downloadmod_nss-d26e83ac8cecd0e9c29991cb9c673a4487f4ec81.tar.gz
mod_nss-d26e83ac8cecd0e9c29991cb9c673a4487f4ec81.tar.xz
mod_nss-d26e83ac8cecd0e9c29991cb9c673a4487f4ec81.zip
Restore moduleKill function so that NSS remains initialized during the
entire configuration state. Other modules were relying on mod_nss leaving NSS initialized. 453508
-rw-r--r--nss_engine_init.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/nss_engine_init.c b/nss_engine_init.c
index ed34ba1..fc3bd25 100644
--- a/nss_engine_init.c
+++ b/nss_engine_init.c
@@ -315,6 +315,13 @@ int nss_init_Module(apr_pool_t *p, apr_pool_t *plog,
mc->nInitCount++;
+ /*
+ * Let us cleanup on restarts and exists
+ */
+ apr_pool_cleanup_register(p, base_server,
+ nss_init_ModuleKill,
+ apr_pool_cleanup_null);
+
mc->ptemp = ptemp;
/*
@@ -491,9 +498,6 @@ int nss_init_Module(apr_pool_t *p, apr_pool_t *plog,
*/
nss_init_ConfigureServer(s, p, ptemp, sc);
}
-
- nss_init_ChildKill(base_server);
- nss_init_ModuleKill(base_server);
}
/*
@@ -1144,12 +1148,16 @@ void nss_init_Child(apr_pool_t *p, server_rec *base_server)
apr_status_t nss_init_ModuleKill(void *data)
{
server_rec *base_server = (server_rec *)data;
+ SSLModConfigRec *mc = myModConfig(base_server);
ap_log_error(APLOG_MARK, APLOG_INFO, 0, base_server,
"Shutting down SSL Session ID Cache");
SSL_ShutdownServerSessionIDCache();
+ if (mc->nInitCount == 1)
+ nss_init_ChildKill(base_server);
+
/* NSS_Shutdown() gets called in nss_init_ChildKill */
return APR_SUCCESS;
}