From: Doug MacEachern Date: Wed, 18 Jul 2001 18:18:20 +0000 (+0000) Subject: add cleanup of SSLStateMachine to tls filter X-Git-Tag: 2.0.21~38 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dbfb786c1fc21898fa1f4b2e4bbe97ba1d3eb473;p=apache add cleanup of SSLStateMachine to tls filter git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89597 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/tls/mod_tls.c b/modules/tls/mod_tls.c index b5cf15b23d..df9fd59515 100644 --- a/modules/tls/mod_tls.c +++ b/modules/tls/mod_tls.c @@ -117,6 +117,12 @@ static const char *tls_cert_file(cmd_parms *cmd, void *dummy, const char *arg) return NULL; } +static apr_status_t tls_filter_cleanup(void *data) +{ + SSLStateMachine_destroy((SSLStateMachine *)data); + return APR_SUCCESS; +} + static int tls_filter_inserter(conn_rec *c) { TLSServerConfig *pConfig = @@ -136,6 +142,9 @@ static int tls_filter_inserter(conn_rec *c) pCtx->pbbInput=apr_brigade_create(c->pool); pCtx->pbbPendingInput=apr_brigade_create(c->pool); + apr_pool_cleanup_register(c->pool, (void*)pCtx->pStateMachine, + tls_filter_cleanup, apr_pool_cleanup_null); + return OK; } diff --git a/modules/tls/openssl_state_machine.c b/modules/tls/openssl_state_machine.c index 171a1aa23d..4f626e9efb 100644 --- a/modules/tls/openssl_state_machine.c +++ b/modules/tls/openssl_state_machine.c @@ -162,6 +162,12 @@ SSLStateMachine *SSLStateMachine_new(const char *szCertificateFile, return pMachine; } +void SSLStateMachine_destroy(SSLStateMachine *pMachine) +{ + SSL_free(pMachine->pSSL); + free(pMachine); +} + void SSLStateMachine_read_inject(SSLStateMachine *pMachine, const unsigned char *aucBuf,int nBuf) { diff --git a/modules/tls/openssl_state_machine.h b/modules/tls/openssl_state_machine.h index 10be69a3b0..581baf9c9b 100644 --- a/modules/tls/openssl_state_machine.h +++ b/modules/tls/openssl_state_machine.h @@ -3,6 +3,7 @@ typedef struct SSLStateMachine SSLStateMachine; void SSLStateMachine_init(void); SSLStateMachine *SSLStateMachine_new(const char *szCertificateFile, const char *szKeyFile); +void SSLStateMachine_destroy(SSLStateMachine *pMachine); void SSLStateMachine_read_inject(SSLStateMachine *pMachine, const unsigned char *aucBuf,int nBuf); int SSLStateMachine_read_extract(SSLStateMachine *pMachine,