diff --git a/src/internal.c b/src/internal.c index 9c7a3dca7..ca8c1eed9 100755 --- a/src/internal.c +++ b/src/internal.c @@ -4759,8 +4759,7 @@ retry: case WOLFSSL_CBIO_ERR_TIMEOUT: if (ssl->options.dtls) { #ifdef WOLFSSL_DTLS - if ((!ssl->options.handShakeDone || - ssl->options.dtlsHsRetain) && + if (!ssl->options.handShakeDone && DtlsPoolTimeout(ssl) == 0 && DtlsPoolSend(ssl) == 0) { diff --git a/src/ssl.c b/src/ssl.c index d90dcb2d2..82295ef6c 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -6617,7 +6617,9 @@ int wolfSSL_dtls_got_timeout(WOLFSSL* ssl) { int result = SSL_SUCCESS; - if (DtlsPoolTimeout(ssl) < 0 || DtlsPoolSend(ssl) < 0) { + if (!ssl->options.handShakeDone && + (DtlsPoolTimeout(ssl) < 0 || DtlsPoolSend(ssl) < 0)) { + result = SSL_FATAL_ERROR; } return result;