From: Doug MacEachern Date: Fri, 29 Mar 2002 02:59:27 +0000 (+0000) Subject: cleanup the proxy context X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=695e8b39307470c46a60cccfc79c05bee65bcc2f;p=thirdparty%2Fapache%2Fhttpd.git cleanup the proxy context git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl@94288 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/ssl_engine_init.c b/ssl_engine_init.c index 547d7999fd2..f6f7c2ccb34 100644 --- a/ssl_engine_init.c +++ b/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/ssl_toolkit_compat.h b/ssl_toolkit_compat.h index d77fcfd444d..53971415466 100644 --- a/ssl_toolkit_compat.h +++ b/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