Mercurial > hg > orthanc
diff OrthancServer/OrthancInitialization.cpp @ 1526:096a8af528c9
fix streams, initialization/finalization of libcurl and openssl
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 12 Aug 2015 10:43:10 +0200 |
parents | 27661b33f624 |
children | 0011cc99443c |
line wrap: on
line diff
--- a/OrthancServer/OrthancInitialization.cpp Tue Aug 11 17:50:38 2015 +0200 +++ b/OrthancServer/OrthancInitialization.cpp Wed Aug 12 10:43:10 2015 +0200 @@ -49,6 +49,16 @@ #include <boost/thread.hpp> +#if ORTHANC_SSL_ENABLED == 1 +// For OpenSSL initialization and finalization +#include <openssl/conf.h> +#include <openssl/engine.h> +#include <openssl/err.h> +#include <openssl/evp.h> +#include <openssl/ssl.h> +#endif + + #if ORTHANC_JPEG_ENABLED == 1 #include <dcmtk/dcmjpeg/djdecode.h> #endif @@ -259,6 +269,18 @@ { boost::mutex::scoped_lock lock(globalMutex_); +#if ORTHANC_SSL_ENABLED == 1 + // https://wiki.openssl.org/index.php/Library_Initialization + SSL_library_init(); + SSL_load_error_strings(); + OpenSSL_add_all_algorithms(); + ERR_load_crypto_strings(); + + curl_global_init(CURL_GLOBAL_ALL); +#else + curl_global_init(CURL_GLOBAL_ALL & ~CURL_GLOBAL_SSL); +#endif + InitializeServerEnumerations(); // Read the user-provided configuration @@ -298,6 +320,20 @@ // Unregister JPEG codecs DJDecoderRegistration::cleanup(); #endif + + curl_global_cleanup(); + +#if ORTHANC_SSL_ENABLED == 1 + // Finalize OpenSSL + // https://wiki.openssl.org/index.php/Library_Initialization#Cleanup + FIPS_mode_set(0); + ENGINE_cleanup(); + CONF_modules_unload(1); + EVP_cleanup(); + CRYPTO_cleanup_all_ex_data(); + ERR_remove_state(0); + ERR_free_strings(); +#endif }