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 =
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;
}
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)
{
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,