]> granicus.if.org Git - apache/commitdiff
cleanup the proxy context
authorDoug MacEachern <dougm@apache.org>
Fri, 29 Mar 2002 02:59:27 +0000 (02:59 +0000)
committerDoug MacEachern <dougm@apache.org>
Fri, 29 Mar 2002 02:59:27 +0000 (02:59 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94288 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/ssl_engine_init.c
modules/ssl/ssl_toolkit_compat.h

index 547d7999fd2fe618e94bc6aac47ce9ebb8fce071..f6f7c2ccb3447bb762a8da7f8f597de90f3a9a46 100644 (file)
@@ -1118,6 +1118,37 @@ void ssl_init_Child(apr_pool_t *p, server_rec *s)
         item = NULL; \
     }
 
+static void ssl_init_ctx_cleanup(modssl_ctx_t *mctx)
+{
+    MODSSL_CFG_ITEM_FREE(X509_STORE_free, mctx->crl);
+
+    MODSSL_CFG_ITEM_FREE(SSL_CTX_free, mctx->ssl_ctx);
+}
+
+static void ssl_init_ctx_cleanup_proxy(modssl_ctx_t *mctx)
+{
+    ssl_init_ctx_cleanup(mctx);
+
+    if (mctx->pkp->certs) {
+        sk_X509_INFO_pop_free(mctx->pkp->certs, X509_INFO_free);
+    }
+}
+
+static void ssl_init_ctx_cleanup_server(modssl_ctx_t *mctx)
+{
+    int i;
+
+    ssl_init_ctx_cleanup(mctx);
+
+    for (i=0; i < SSL_AIDX_MAX; i++) {
+        MODSSL_CFG_ITEM_FREE(X509_free,
+                             mctx->pks->certs[i]);
+
+        MODSSL_CFG_ITEM_FREE(EVP_PKEY_free,
+                             mctx->pks->keys[i]);
+    }
+}
+
 apr_status_t ssl_init_ModuleKill(void *data)
 {
     SSLSrvConfigRec *sc;
@@ -1139,22 +1170,11 @@ apr_status_t ssl_init_ModuleKill(void *data)
      * in the per-server configurations
      */
     for (s = base_server; s; s = s->next) {
-        int i;
         sc = mySrvConfig(s);
 
-        for (i=0; i < SSL_AIDX_MAX; i++) {
-            MODSSL_CFG_ITEM_FREE(X509_free,
-                                 sc->server->pks->certs[i]);
-
-            MODSSL_CFG_ITEM_FREE(EVP_PKEY_free,
-                                 sc->server->pks->keys[i]);
-        }
-
-        MODSSL_CFG_ITEM_FREE(X509_STORE_free,
-                             sc->server->crl);
+        ssl_init_ctx_cleanup_proxy(sc->proxy);
 
-        MODSSL_CFG_ITEM_FREE(SSL_CTX_free,
-                             sc->server->ssl_ctx);
+        ssl_init_ctx_cleanup_server(sc->server);
     }
 
     /*
index d77fcfd444d49ed476861d088ffd0ad628b32ce8..539714154661d51b789e3c3e69810573b9d5fae0 100644 (file)
 #define sk_X509_num sk_num
 #define sk_X509_value (X509 *)sk_value
 #define sk_X509_INFO_value (X509_INFO *)sk_value
+#define sk_X509_INFO_pop_free sk_pop_free 
 #define sk_X509_INFO_num sk_num
 #define sk_X509_INFO_new_null sk_new_null
 #define sk_X509_NAME_num sk_num