From 88b1f3994f4c67ac60c037365d7920843a0baa8a Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Sun, 4 Dec 2016 23:07:43 -0500 Subject: [PATCH] openssl 1.1.0 init and cleanup --- src/network.c | 9 +++++++++ src/server.c | 12 +++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/network.c b/src/network.c index fa06d6a7..6bd5a08b 100644 --- a/src/network.c +++ b/src/network.c @@ -770,9 +770,18 @@ int network_init(server *srv) { if (buffer_string_is_empty(s->ssl_pemfile) && buffer_string_is_empty(s->ssl_ca_file)) continue; if (srv->ssl_is_init == 0) { + #if OPENSSL_VERSION_NUMBER >= 0x10100000L \ + && !defined(LIBRESSL_VERSION_NUMBER) + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS + |OPENSSL_INIT_LOAD_CRYPTO_STRINGS,NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + |OPENSSL_INIT_ADD_ALL_DIGESTS + |OPENSSL_INIT_LOAD_CONFIG, NULL); + #else SSL_load_error_strings(); SSL_library_init(); OpenSSL_add_all_algorithms(); + #endif srv->ssl_is_init = 1; if (0 == RAND_status()) { diff --git a/src/server.c b/src/server.c index f00a8ea0..faf175cd 100644 --- a/src/server.c +++ b/src/server.c @@ -380,18 +380,20 @@ static void server_free(server *srv) { #ifdef USE_OPENSSL if (srv->ssl_is_init) { - CRYPTO_cleanup_all_ex_data(); - ERR_free_strings(); #if OPENSSL_VERSION_NUMBER >= 0x10100000L \ && !defined(LIBRESSL_VERSION_NUMBER) /*(OpenSSL libraries handle thread init and deinit) * https://github.com/openssl/openssl/pull/1048 */ - #elif OPENSSL_VERSION_NUMBER >= 0x10000000L - ERR_remove_thread_state(NULL); #else + CRYPTO_cleanup_all_ex_data(); + ERR_free_strings(); + #if OPENSSL_VERSION_NUMBER >= 0x10000000L + ERR_remove_thread_state(NULL); + #else ERR_remove_state(0); - #endif + #endif EVP_cleanup(); + #endif } #endif li_rand_cleanup(); -- 2.11.4.GIT