]> granicus.if.org Git - apache/commitdiff
The mutex must be pool-managed, not ssl managed. We are encountering
authorWilliam A. Rowe Jr <wrowe@apache.org>
Fri, 11 Jan 2002 06:05:18 +0000 (06:05 +0000)
committerWilliam A. Rowe Jr <wrowe@apache.org>
Fri, 11 Jan 2002 06:05:18 +0000 (06:05 +0000)
  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

modules/ssl/mod_ssl.h
modules/ssl/ssl_engine_init.c
modules/ssl/ssl_engine_mutex.c

index 19dc1e549da44f45656154065a059f22be1c40a3..915266ac2613b5368b02508d7739730ad3ab0226 100644 (file)
@@ -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 *);
index 7d4e4e197d2c76bdd26edcf064a768efb5f470ff..b587235a063226a7c79fe1105717f0716c13a20c 100644 (file)
@@ -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
      */
index 9a58dd4b14cf4b98cddc693e0baaf9d74b6eff3e..8164d28b6969ad2dbe903a64a67ab20bcfe82ccc 100644 (file)
@@ -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;
-}
-