diff --git a/src/internal.c b/src/internal.c index 5f5a56cb0..4bf2cbe0f 100644 --- a/src/internal.c +++ b/src/internal.c @@ -6057,6 +6057,7 @@ void DtlsMsgPoolReset(WOLFSSL* ssl) if (ssl->dtls_tx_msg_list) { DtlsMsgListDelete(ssl->dtls_tx_msg_list, ssl->heap); ssl->dtls_tx_msg_list = NULL; + ssl->dtls_tx_msg = NULL; ssl->dtls_tx_msg_list_sz = 0; ssl->dtls_timeout = ssl->dtls_timeout_init; } @@ -6085,10 +6086,12 @@ int VerifyForDtlsMsgPoolSend(WOLFSSL* ssl, byte type, word32 fragOffset) int DtlsMsgPoolSend(WOLFSSL* ssl, int sendOnlyFirstPacket) { int ret = 0; - DtlsMsg* pool = ssl->dtls_tx_msg_list; + DtlsMsg* pool; WOLFSSL_ENTER("DtlsMsgPoolSend()"); + pool = ssl->dtls_tx_msg == NULL ? ssl->dtls_tx_msg_list : ssl->dtls_tx_msg; + if (pool != NULL) { if ((ssl->options.side == WOLFSSL_SERVER_END && !(ssl->options.acceptState == SERVER_HELLO_DONE || @@ -6176,6 +6179,7 @@ int DtlsMsgPoolSend(WOLFSSL* ssl, int sendOnlyFirstPacket) } else pool = pool->next; + ssl->dtls_tx_msg = pool; } } diff --git a/wolfssl/internal.h b/wolfssl/internal.h index a03e86f8c..a22c36702 100644 --- a/wolfssl/internal.h +++ b/wolfssl/internal.h @@ -3741,6 +3741,7 @@ struct WOLFSSL { word32 dtls_tx_msg_list_sz; word32 dtls_rx_msg_list_sz; DtlsMsg* dtls_tx_msg_list; + DtlsMsg* dtls_tx_msg; DtlsMsg* dtls_rx_msg_list; void* IOCB_CookieCtx; /* gen cookie ctx */ word32 dtls_expected_rx;