diff --git a/src/sniffer.c b/src/sniffer.c index bcc6cd6ba..e7014f321 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -4692,15 +4692,17 @@ static int DecryptTls(WOLFSSL* ssl, byte* plain, const byte* input, int ret = 0; #ifdef WOLFSSL_ASYNC_CRYPT - ret = wolfSSL_AsyncPop(ssl, &ssl->decrypt.state); - if (ret != WC_NOT_PENDING_E) { - /* check for still pending */ - if (ret == WC_PENDING_E) - return ret; + if (ssl->decrypt.state != CIPHER_STATE_BEGIN) { + ret = wolfSSL_AsyncPop(ssl, &ssl->decrypt.state); + if (ret != WC_NOT_PENDING_E) { + /* check for still pending */ + if (ret == WC_PENDING_E) + return ret; - ssl->error = 0; /* clear async */ + ssl->error = 0; /* clear async */ - /* let failures through so CIPHER_STATE_END logic is run */ + /* let failures through so CIPHER_STATE_END logic is run */ + } } else #endif