From: Doug MacEachern Date: Fri, 29 Mar 2002 02:59:27 +0000 (+0000) Subject: cleanup the proxy context X-Git-Tag: 2.0.34~46 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a24fd6a18183d3aa42258c9ead0d819d6f161609;p=apache cleanup the proxy context git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94288 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index 547d7999fd..f6f7c2ccb3 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -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); } /* diff --git a/modules/ssl/ssl_toolkit_compat.h b/modules/ssl/ssl_toolkit_compat.h index d77fcfd444..5397141546 100644 --- a/modules/ssl/ssl_toolkit_compat.h +++ b/modules/ssl/ssl_toolkit_compat.h @@ -162,6 +162,7 @@ #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