From fec726f10a7a52d1b0b92f4665a6077784b96ccf Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 12 Oct 2018 10:39:40 -0700 Subject: [PATCH] Fix for async issue with receiving multiple TLS records (`server_key_exchange` and `server_hello_done`) in same packet, which may miss call to `DoHandShakeMsgType` -> `HashInput` because `ssl->error` is still marked pending `WC_PENDING_E`. --- src/internal.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/internal.c b/src/internal.c index 92093fa6b..d75dee533 100644 --- a/src/internal.c +++ b/src/internal.c @@ -10909,6 +10909,11 @@ static int DoHandShakeMsgType(WOLFSSL* ssl, byte* input, word32* inOutIdx, } #endif } + + /* make sure async error is cleared */ + if (ret == 0 && ssl->error == WC_PENDING_E) { + ssl->error = 0; + } #endif /* WOLFSSL_ASYNC_CRYPT || WOLFSSL_NONBLOCK_OCSP */ WOLFSSL_LEAVE("DoHandShakeMsgType()", ret);