diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2021-02-10 17:15:59 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-03-15 16:10:10 +0000 |
commit | 7914208dd60044f912982210a9d02184e9da9aa2 (patch) | |
tree | 7313dfe404a602da924cc564f22fb2250c5add7a | |
parent | a71d3efdc76842dda106e73c71d28b003013abcf (diff) | |
download | mongo-7914208dd60044f912982210a9d02184e9da9aa2.tar.gz |
SERVER-54219 macOS synchronous SSL read code needs to handle errSSLWouldBlock
(cherry picked from commit 165cb840fe979e2f0d07289c5f7eceda3fdb6b28)
-rw-r--r-- | src/mongo/util/net/ssl_manager_apple.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mongo/util/net/ssl_manager_apple.cpp b/src/mongo/util/net/ssl_manager_apple.cpp index 6df69044dd8..71566aee663 100644 --- a/src/mongo/util/net/ssl_manager_apple.cpp +++ b/src/mongo/util/net/ssl_manager_apple.cpp @@ -1705,8 +1705,12 @@ Future<SSLPeerInfo> SSLManagerApple::parseAndValidatePeerCertificate( int SSLManagerApple::SSL_read(SSLConnectionInterface* conn, void* buf, int num) { auto ssl = checked_cast<SSLConnectionApple*>(conn)->get(); size_t read = 0; - uassertOSStatusOK(::SSLRead(ssl, static_cast<uint8_t*>(buf), num, &read), - SocketErrorKind::RECV_ERROR); + + const auto status = ::SSLRead(ssl, static_cast<uint8_t*>(buf), num, &read); + if (status != ::errSSLWouldBlock) { + uassertOSStatusOK(status, SocketErrorKind::RECV_ERROR); + } + return read; } |