summaryrefslogtreecommitdiffstats
path: root/streaming
diff options
context:
space:
mode:
authorCosta Tsaousis <costa@netdata.cloud>2022-12-01 15:56:50 +0200
committerGitHub <noreply@github.com>2022-12-01 15:56:50 +0200
commit54d461b179b1a3b825acde60911fb50515c4bea8 (patch)
treee3a8ad41657939b1667e222322d8a563a59edd22 /streaming
parentf7b2db2b59b16b6e31b1d84941e68e44f6301bc9 (diff)
fix SSL related crashes (#14076)
prevent concurrent initialization of SSL from multiple threads; prevent re-initialization of SSL
Diffstat (limited to 'streaming')
-rw-r--r--streaming/sender.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/streaming/sender.c b/streaming/sender.c
index 8e637d2bd7..62097e39f6 100644
--- a/streaming/sender.c
+++ b/streaming/sender.c
@@ -1114,9 +1114,14 @@ void *rrdpush_sender_thread(void *ptr) {
}
#ifdef ENABLE_HTTPS
- if (netdata_use_ssl_on_stream & NETDATA_SSL_FORCE ){
- security_start_ssl(NETDATA_SSL_CONTEXT_STREAMING);
- ssl_security_location_for_context(netdata_ssl_client_ctx, netdata_ssl_ca_file, netdata_ssl_ca_path);
+ if (netdata_use_ssl_on_stream & NETDATA_SSL_FORCE ) {
+ static SPINLOCK sp = NETDATA_SPINLOCK_INITIALIZER;
+ netdata_spinlock_lock(&sp);
+ if(!netdata_ssl_client_ctx) {
+ security_start_ssl(NETDATA_SSL_CONTEXT_STREAMING);
+ ssl_security_location_for_context(netdata_ssl_client_ctx, netdata_ssl_ca_file, netdata_ssl_ca_path);
+ }
+ netdata_spinlock_unlock(&sp);
}
#endif