From 54e06cd04e362b8ba7124911a5f76f251afa032b Mon Sep 17 00:00:00 2001 From: John Safranek Date: Fri, 4 Sep 2015 11:36:50 -0700 Subject: [PATCH] added deallocator for DtlsPools --- src/internal.c | 23 +++++++++++++++-------- wolfssl/internal.h | 1 + 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/internal.c b/src/internal.c index 9ad569ca1..d48e56030 100644 --- a/src/internal.c +++ b/src/internal.c @@ -2013,10 +2013,7 @@ void SSL_ResourceFree(WOLFSSL* ssl) if (ssl->buffers.outputBuffer.dynamicFlag) ShrinkOutputBuffer(ssl); #ifdef WOLFSSL_DTLS - if (ssl->dtls_pool != NULL) { - DtlsPoolReset(ssl); - XFREE(ssl->dtls_pool, ssl->heap, DYNAMIC_TYPE_NONE); - } + DtlsPoolDelete(ssl); if (ssl->dtls_msg_list != NULL) { DtlsMsgListDelete(ssl->dtls_msg_list, ssl->heap); ssl->dtls_msg_list = NULL; @@ -2132,10 +2129,10 @@ void FreeHandshakeResources(WOLFSSL* ssl) #ifdef WOLFSSL_DTLS /* DTLS_POOL */ - if (ssl->options.dtls && ssl->dtls_pool != NULL) { - DtlsPoolReset(ssl); - XFREE(ssl->dtls_pool, ssl->heap, DYNAMIC_TYPE_DTLS_POOL); - ssl->dtls_pool = NULL; + if (ssl->options.dtls) { + DtlsPoolDelete(ssl); + DtlsMsgListDelete(ssl->dtls_msg_list, ssl->heap); + ssl->dtls_msg_list = NULL; } #endif @@ -2296,6 +2293,16 @@ void DtlsPoolReset(WOLFSSL* ssl) } +void DtlsPoolDelete(WOLFSSL* ssl) +{ + if (ssl->dtls_pool != NULL) { + DtlsPoolReset(ssl); + XFREE(ssl->dtls_pool, ssl->heap, DYNAMIC_TYPE_DTLS_POOL); + ssl->dtls_pool = NULL; + } +} + + int DtlsPoolTimeout(WOLFSSL* ssl) { int result = -1; diff --git a/wolfssl/internal.h b/wolfssl/internal.h index add081d78..d65665ec0 100644 --- a/wolfssl/internal.h +++ b/wolfssl/internal.h @@ -2671,6 +2671,7 @@ WOLFSSL_LOCAL int GrowInputBuffer(WOLFSSL* ssl, int size, int usedLength); WOLFSSL_LOCAL int DtlsPoolTimeout(WOLFSSL*); WOLFSSL_LOCAL int DtlsPoolSend(WOLFSSL*); WOLFSSL_LOCAL void DtlsPoolReset(WOLFSSL*); + WOLFSSL_LOCAL void DtlsPoolDelete(WOLFSSL*); WOLFSSL_LOCAL DtlsMsg* DtlsMsgNew(word32, void*); WOLFSSL_LOCAL void DtlsMsgDelete(DtlsMsg*, void*);