From 3ec2d32c69022ab0b192b9c553e93f860019f802 Mon Sep 17 00:00:00 2001 From: chenxiaobin19 <1025221611@qq.com> Date: Sat, 9 Oct 2021 17:51:23 +0800 Subject: [PATCH] stop retry when the send buffer is full for nonblocking SSL_write --- src/common/backend/libpq/be-secure.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/common/backend/libpq/be-secure.cpp b/src/common/backend/libpq/be-secure.cpp index 24a0dc72e..bbd89cdca 100644 --- a/src/common/backend/libpq/be-secure.cpp +++ b/src/common/backend/libpq/be-secure.cpp @@ -344,6 +344,11 @@ ssize_t secure_write(Port* port, void* ptr, size_t len) break; case SSL_ERROR_WANT_READ: case SSL_ERROR_WANT_WRITE: + if (port->noblock) { + errno = EWOULDBLOCK; + n = -1; + break; + } #ifdef WIN32 pgwin32_waitforsinglesocket(SSL_get_fd(port->ssl), (err == SSL_ERROR_WANT_READ) ? (FD_READ | FD_CLOSE) : (FD_WRITE | FD_CLOSE),