summaryrefslogtreecommitdiffstats
path: root/libnetdata
diff options
context:
space:
mode:
authorEmmanuel Vasilakis <mrzammler@mm.st>2023-01-25 19:06:06 +0200
committerGitHub <noreply@github.com>2023-01-25 19:06:06 +0200
commitbf38a22f323be8fa2b35bf782068d903064530ed (patch)
treeeb06b95d2cb3e1014e06be37355f56de55175be4 /libnetdata
parent597f08dee6d8cbfdcc24fa89a37c710b237f06da (diff)
Revert "Misc SSL improvements" (#14327)
Revert "Misc SSL improvements (#14317)" This reverts commit f4d017ccf7385df3e152eeb5ea1259702ab01043.
Diffstat (limited to 'libnetdata')
-rw-r--r--libnetdata/socket/socket.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/libnetdata/socket/socket.c b/libnetdata/socket/socket.c
index eb8e3a93da..69124b9491 100644
--- a/libnetdata/socket/socket.c
+++ b/libnetdata/socket/socket.c
@@ -923,36 +923,53 @@ int connect_to_one_of_urls(const char *destination, int default_port, struct tim
ssize_t netdata_ssl_read(SSL *ssl, void *buf, size_t num) {
error_limit_static_thread_var(erl, 1, 0);
- int bytes, err;
+ int bytes, err, retries = 0;
+ //do {
bytes = SSL_read(ssl, buf, (int)num);
err = SSL_get_error(ssl, bytes);
+ retries++;
+ //} while (bytes <= 0 && err == SSL_ERROR_WANT_READ);
if(unlikely(bytes <= 0)) {
if (err == SSL_ERROR_WANT_WRITE || err == SSL_ERROR_WANT_READ) {
bytes = 0;
} else
- error_limit(&erl, "SSL_write() returned %d bytes, SSL error %d", bytes, err);
+ error("SSL_write() returned %d bytes, SSL error %d", bytes, err);
}
+ if(retries > 1)
+ error_limit(&erl, "SSL_read() retried %d times", retries);
+
return bytes;
}
ssize_t netdata_ssl_write(SSL *ssl, const void *buf, size_t num) {
error_limit_static_thread_var(erl, 1, 0);
- int bytes, err;
+ int bytes, err, retries = 0;
+ size_t total = 0;
- bytes = SSL_write(ssl, (uint8_t *)buf, (int)num);
+ //do {
+ bytes = SSL_write(ssl, (uint8_t *)buf + total, (int)(num - total));
err = SSL_get_error(ssl, bytes);
+ retries++;
+
+ if(bytes > 0)
+ total += bytes;
+
+ //} while ((bytes <= 0 && (err == SSL_ERROR_WANT_WRITE)) || (bytes > 0 && total < num));
if(unlikely(bytes <= 0)) {
if (err == SSL_ERROR_WANT_WRITE || err == SSL_ERROR_WANT_READ) {
bytes = 0;
} else
- error_limit(&erl, "SSL_write() returned %d bytes, SSL error %d", bytes, err);
+ error("SSL_write() returned %d bytes, SSL error %d", bytes, err);
}
+ if(retries > 1)
+ error_limit(&erl, "SSL_write() retried %d times", retries);
+
return bytes;
}
#endif