Browse Source

Use SSL_ERROR_ZERO_RETURN to check if the SSL peer is closed.

yhirose 2 years ago
parent
commit
1ebb8412c5
1 changed files with 2 additions and 1 deletions
  1. 2 1
      httplib.h

+ 2 - 1
httplib.h

@@ -6765,7 +6765,8 @@ inline bool ClientImpl::process_request(Stream &strm, Request &req,
 #ifdef CPPHTTPLIB_OPENSSL_SUPPORT
   if (is_ssl()) {
     char buf[1];
-    if (SSL_peek(socket_.ssl, buf, 1) == 0) {
+    if (SSL_peek(socket_.ssl, buf, 1) == 0 &&
+        SSL_get_error(socket_.ssl, 0) == SSL_ERROR_ZERO_RETURN) {
       error = Error::SSLPeerCouldBeClosed_;
       return false;
     }