From: William A. Rowe Jr Date: Fri, 11 Jan 2002 06:05:18 +0000 (+0000) Subject: The mutex must be pool-managed, not ssl managed. We are encountering X-Git-Tag: 2.0.31~224 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ffeb2bbe1600a36da662b3ec966cb422515c8cf4;p=apache The mutex must be pool-managed, not ssl managed. We are encountering segfaults on Win32 when the cleanup of the mutex occurs after the pool was destroyed. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92818 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/ssl/mod_ssl.h b/modules/ssl/mod_ssl.h index 19dc1e549d..915266ac26 100644 --- a/modules/ssl/mod_ssl.h +++ b/modules/ssl/mod_ssl.h @@ -733,7 +733,6 @@ int ssl_mutex_init(server_rec *, apr_pool_t *); int ssl_mutex_reinit(server_rec *, apr_pool_t *); int ssl_mutex_on(server_rec *); int ssl_mutex_off(server_rec *); -int ssl_mutex_kill(server_rec *); /* Logfile Support */ void ssl_log_open(server_rec *, server_rec *, apr_pool_t *); diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index 7d4e4e197d..b587235a06 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -970,9 +970,9 @@ void ssl_init_Child(apr_pool_t *p, server_rec *s) /* XXX: there should be an ap_srand() function */ srand((unsigned int)time(NULL)); - /* open the mutex lockfile */ - ssl_mutex_reinit(s, p); - return; + /* open the mutex lockfile */ + ssl_mutex_reinit(s, p); + return; } apr_status_t ssl_init_ChildKill(void *data) @@ -992,8 +992,6 @@ apr_status_t ssl_init_ModuleKill(void *data) */ ssl_scache_kill(s); - ssl_mutex_kill(s); - /* * Destroy the temporary keys and params */ diff --git a/modules/ssl/ssl_engine_mutex.c b/modules/ssl/ssl_engine_mutex.c index 9a58dd4b14..8164d28b69 100644 --- a/modules/ssl/ssl_engine_mutex.c +++ b/modules/ssl/ssl_engine_mutex.c @@ -68,6 +68,7 @@ int ssl_mutex_init(server_rec *s, apr_pool_t *p) if (mc->nMutexMode == SSL_MUTEXMODE_NONE) return TRUE; + if (apr_lock_create(&mc->pMutex, APR_MUTEX, APR_LOCKALL, APR_LOCK_DEFAULT, mc->szMutexFile, p) != APR_SUCCESS) return FALSE; @@ -80,6 +81,7 @@ int ssl_mutex_reinit(server_rec *s, apr_pool_t *p) if (mc->nMutexMode == SSL_MUTEXMODE_NONE) return TRUE; + if (apr_lock_child_init(&mc->pMutex, mc->szMutexFile, p) != APR_SUCCESS) return FALSE; return TRUE; @@ -111,18 +113,3 @@ int ssl_mutex_off(server_rec *s) return TRUE; } -int ssl_mutex_kill(server_rec *s) -{ - SSLModConfigRec *mc = myModConfig(s); - - if (mc->nMutexMode == SSL_MUTEXMODE_NONE) - return TRUE; - /* XXX: currently mutex is not created until 2nd pass at startup */ - if (!mc->pMutex) - return TRUE; - if (apr_lock_destroy(mc->pMutex) != APR_SUCCESS) - return FALSE; - mc->pMutex = NULL; - return TRUE; -} -