mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2025-05-15 09:18:27 +00:00
Changed to use non-blocking socket in is_ssl_peer_could_be_closed
This commit is contained in:
parent
a7bc00e330
commit
258992a160
1 changed files with 4 additions and 2 deletions
|
@ -7418,6 +7418,10 @@ inline bool ClientImpl::send(Request &req, Response &res, Error &error) {
|
||||||
|
|
||||||
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
||||||
inline bool ClientImpl::is_ssl_peer_could_be_closed(SSL *ssl) const {
|
inline bool ClientImpl::is_ssl_peer_could_be_closed(SSL *ssl) const {
|
||||||
|
detail::set_nonblocking(socket_.sock, true);
|
||||||
|
auto se = detail::scope_exit(
|
||||||
|
[&]() { detail::set_nonblocking(socket_.sock, false); });
|
||||||
|
|
||||||
char buf[1];
|
char buf[1];
|
||||||
return !SSL_peek(ssl, buf, 1) &&
|
return !SSL_peek(ssl, buf, 1) &&
|
||||||
SSL_get_error(ssl, 0) == SSL_ERROR_ZERO_RETURN;
|
SSL_get_error(ssl, 0) == SSL_ERROR_ZERO_RETURN;
|
||||||
|
@ -7438,9 +7442,7 @@ inline bool ClientImpl::send_(Request &req, Response &res, Error &error) {
|
||||||
|
|
||||||
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
||||||
if (is_alive && is_ssl()) {
|
if (is_alive && is_ssl()) {
|
||||||
detail::set_nonblocking(socket_.sock, true);
|
|
||||||
if (is_ssl_peer_could_be_closed(socket_.ssl)) { is_alive = false; }
|
if (is_ssl_peer_could_be_closed(socket_.ssl)) { is_alive = false; }
|
||||||
detail::set_nonblocking(socket_.sock, false);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue