From c55575665f20494eaca82b25a13e1381a02d3692 Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 2 Jun 2017 10:35:26 -0700 Subject: [PATCH] Cleanup to use `WANT_READ` instead of async `WC_PENDING_E` for non-blocking OCSP and CRL. --- src/crl.c | 2 +- src/internal.c | 16 +++++++++------- src/ocsp.c | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/crl.c b/src/crl.c index 7743a1797..e632dbf10 100755 --- a/src/crl.c +++ b/src/crl.c @@ -350,7 +350,7 @@ int CheckCertCRL(WOLFSSL_CRL* crl, DecodedCert* cert) ret = crl->crlIOCb(crl, (const char*)cert->extCrlInfo, cert->extCrlInfoSz); if (ret == WOLFSSL_CBIO_ERR_WANT_READ) { - ret = WC_PENDING_E; + ret = WANT_READ; } else if (ret >= 0) { /* try again */ diff --git a/src/internal.c b/src/internal.c index 946d58f17..eab408824 100755 --- a/src/internal.c +++ b/src/internal.c @@ -7693,8 +7693,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, word32 totalSz ret = CheckCertOCSP(ssl->ctx->cm->ocsp, args->dCert, NULL); #ifdef WOLFSSL_ASYNC_CRYPT - /* Handle WC_PENDING_E */ - if (ret == WC_PENDING_E) { + /* non-blocking socket re-entry requires async */ + if (ret == WANT_READ) { goto exit_ppc; } #endif @@ -7713,7 +7713,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, word32 totalSz WOLFSSL_MSG("Doing Non Leaf CRL check"); ret = CheckCertCRL(ssl->ctx->cm->crl, args->dCert); #ifdef WOLFSSL_ASYNC_CRYPT - if (ret == WC_PENDING_E) { + /* non-blocking socket re-entry requires async */ + if (ret == WANT_READ) { goto exit_ppc; } #endif @@ -7859,7 +7860,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, word32 totalSz ret = CheckCertOCSP(ssl->ctx->cm->ocsp, args->dCert, NULL); #ifdef WOLFSSL_ASYNC_CRYPT - if (ret == WC_PENDING_E) { + /* non-blocking socket re-entry requires async */ + if (ret == WANT_READ) { goto exit_ppc; } #endif @@ -7879,7 +7881,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, word32 totalSz WOLFSSL_MSG("Doing Leaf CRL check"); ret = CheckCertCRL(ssl->ctx->cm->crl, args->dCert); #ifdef WOLFSSL_ASYNC_CRYPT - if (ret == WC_PENDING_E) { + /* non-blocking socket re-entry requires async */ + if (ret == WANT_READ) { goto exit_ppc; } #endif @@ -8289,8 +8292,7 @@ exit_ppc: WOLFSSL_LEAVE("ProcessPeerCerts", ret); #ifdef WOLFSSL_ASYNC_CRYPT - /* Handle WC_PENDING_E */ - if (ret == WC_PENDING_E) { + if (ret == WC_PENDING_E || ret == WANT_READ) { /* Mark message as not recevied so it can process again */ ssl->msgsReceived.got_certificate = 0; diff --git a/src/ocsp.c b/src/ocsp.c index 7f34a5615..4554b24b0 100644 --- a/src/ocsp.c +++ b/src/ocsp.c @@ -446,7 +446,7 @@ int CheckOcspRequest(WOLFSSL_OCSP* ocsp, OcspRequest* ocspRequest, request, requestSz, &response); } if (responseSz == WOLFSSL_CBIO_ERR_WANT_READ) { - ret = WC_PENDING_E; + ret = WANT_READ; } XFREE(request, ocsp->cm->heap, DYNAMIC_TYPE_OCSP);