summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2021-02-10 17:15:59 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-03-15 16:10:10 +0000
commit7914208dd60044f912982210a9d02184e9da9aa2 (patch)
tree7313dfe404a602da924cc564f22fb2250c5add7a
parenta71d3efdc76842dda106e73c71d28b003013abcf (diff)
downloadmongo-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.cpp8
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;
}