Avoid multiple initializations of this library. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/reds.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/server/reds.c b/server/reds.c index 0445623..c139d8d 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); -- 2.7.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel