diff options
author | Emmanuel Vasilakis <mrzammler@mm.st> | 2023-01-25 19:06:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-25 19:06:06 +0200 |
commit | bf38a22f323be8fa2b35bf782068d903064530ed (patch) | |
tree | eb06b95d2cb3e1014e06be37355f56de55175be4 /libnetdata/socket | |
parent | 597f08dee6d8cbfdcc24fa89a37c710b237f06da (diff) |
Revert "Misc SSL improvements" (#14327)
Revert "Misc SSL improvements (#14317)"
This reverts commit f4d017ccf7385df3e152eeb5ea1259702ab01043.
Diffstat (limited to 'libnetdata/socket')
-rw-r--r-- | libnetdata/socket/socket.c | 27 |
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 |