diff --git a/src/internal.c b/src/internal.c index a13d1e5eb..a2cbdeff6 100644 --- a/src/internal.c +++ b/src/internal.c @@ -6488,6 +6488,16 @@ void SSL_ResourceFree(WOLFSSL* ssl) void FreeHandshakeResources(WOLFSSL* ssl) { +#ifdef WOLFSSL_DTLS + /* DTLS_POOL */ + if (ssl->options.dtls) { + DtlsMsgPoolReset(ssl); + DtlsMsgListDelete(ssl->dtls_rx_msg_list, ssl->heap); + ssl->dtls_rx_msg_list = NULL; + ssl->dtls_rx_msg_list_sz = 0; + } +#endif + #ifdef HAVE_SECURE_RENEGOTIATION if (ssl->secure_renegotiation && ssl->secure_renegotiation->enabled) { WOLFSSL_MSG("Secure Renegotiation needs to retain handshake resources"); @@ -6532,16 +6542,6 @@ void FreeHandshakeResources(WOLFSSL* ssl) } } -#ifdef WOLFSSL_DTLS - /* DTLS_POOL */ - if (ssl->options.dtls) { - DtlsMsgPoolReset(ssl); - DtlsMsgListDelete(ssl->dtls_rx_msg_list, ssl->heap); - ssl->dtls_rx_msg_list = NULL; - ssl->dtls_rx_msg_list_sz = 0; - } -#endif - #if defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) && \ defined(HAVE_SESSION_TICKET) if (!ssl->options.tls1_3) diff --git a/src/ssl.c b/src/ssl.c index a5e20b6ef..3110519c3 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -11633,7 +11633,7 @@ int wolfSSL_dtls_got_timeout(WOLFSSL* ssl) if (ssl == NULL) return WOLFSSL_FATAL_ERROR; - if (!ssl->options.handShakeDone && + if ((IsSCR(ssl) || !ssl->options.handShakeDone) && (DtlsMsgPoolTimeout(ssl) < 0 || DtlsMsgPoolSend(ssl, 0) < 0)) { result = WOLFSSL_FATAL_ERROR;