summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormoonbreon <yakoup46@gmail.com>2023-09-08 04:25:23 -0400
committerAustin S. Hemmelgarn <ahferroin7@gmail.com>2023-09-11 10:36:14 -0400
commit4fb94bf978ed89c8986ac381e19679f7738999c5 (patch)
tree1789a78cd999db115af4e42f342bc8ccde2b9f93
parentfbc70befb035eaad83664470345121a305e8fb84 (diff)
don't return `-1` if the socket was closed (#15771)
(cherry picked from commit 43b1a2e25ed1275ccd60e6c2c7eed550ee44adf7)
-rw-r--r--exporting/send_data.c2
-rw-r--r--libnetdata/socket/security.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/exporting/send_data.c b/exporting/send_data.c
index 3fec7320d6..1b13f837fd 100644
--- a/exporting/send_data.c
+++ b/exporting/send_data.c
@@ -103,6 +103,8 @@ void simple_connector_receive_response(int *sock, struct instance *instance)
// failed to receive data
if (errno != EAGAIN && errno != EWOULDBLOCK) {
netdata_log_error("EXPORTING: cannot receive data from '%s'.", instance->config.destination);
+ close(*sock);
+ *sock = -1;
}
}
diff --git a/libnetdata/socket/security.c b/libnetdata/socket/security.c
index c1bb763456..3a3a171e52 100644
--- a/libnetdata/socket/security.c
+++ b/libnetdata/socket/security.c
@@ -234,6 +234,11 @@ ssize_t netdata_ssl_read(NETDATA_SSL *ssl, void *buf, size_t num) {
if(unlikely(bytes <= 0)) {
int err = SSL_get_error(ssl->conn, bytes);
+ if (err == SSL_ERROR_ZERO_RETURN) {
+ ssl->ssl_errno = err;
+ return 0;
+ }
+
if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) {
ssl->ssl_errno = err;
errno = EWOULDBLOCK;