[Spice-commits] server/reds.c
Frediano Ziglio
fziglio at kemper.freedesktop.org
Wed Jun 22 14:36:48 UTC 2016
server/reds.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
New commits:
commit 356f819e50350ce906efa39623357c68c3bcc670
Author: Frediano Ziglio <fziglio at redhat.com>
Date: Mon Jun 20 09:40:48 2016 +0100
Initialise OpenSSL just once
Avoid multiple initializations of this library.
Also initialize using thread safe code to avoid possible race
conditions.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
Acked-by: Pavel Grunt <pgrunt at redhat.com>
diff --git a/server/reds.c b/server/reds.c
index b358542..df6c10e 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2801,8 +2801,19 @@ static void openssl_thread_setup(void)
CRYPTO_set_locking_callback(pthreads_locking_callback);
}
+static gpointer openssl_global_init(gpointer arg)
+{
+ SSL_library_init();
+ SSL_load_error_strings();
+
+ openssl_thread_setup();
+
+ return NULL;
+}
+
static int reds_init_ssl(RedsState *reds)
{
+ static GOnce openssl_once = G_ONCE_INIT;
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
const SSL_METHOD *ssl_method;
#else
@@ -2814,8 +2825,7 @@ static int reds_init_ssl(RedsState *reds)
long ssl_options = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
/* Global system initialization*/
- SSL_library_init();
- SSL_load_error_strings();
+ g_once(&openssl_once, openssl_global_init, NULL);
/* Create our context*/
/* SSLv23_method() handles TLSv1.x in addition to SSLv2/v3 */
@@ -2879,8 +2889,6 @@ static int reds_init_ssl(RedsState *reds)
}
}
- openssl_thread_setup();
-
#ifndef SSL_OP_NO_COMPRESSION
STACK *cmp_stack = SSL_COMP_get_compression_methods();
sk_zero(cmp_stack);
More information about the Spice-commits
mailing list