X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Finit.c;h=613606ebdc8e52e4086fcfefd05999656ca0ab51;hp=c7eff8ba4ab51c88c736ac3d6e1d6e9739d8acaa;hb=ed49f43a0390217e1c2df0054fb7352523be9a58;hpb=c7b7938e75587d1ff8cf28c9de966623cfbe8858 diff --git a/crypto/init.c b/crypto/init.c index c7eff8ba4a..613606ebdc 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -62,7 +62,9 @@ #include #include #include +#ifndef OPENSSL_NO_ENGINE #include +#endif #include #include #include @@ -372,6 +374,7 @@ static void ossl_init_no_config(void) config_inited = 1; } +#ifndef OPENSSL_NO_ASYNC static OPENSSL_INIT_ONCE async = OPENSSL_INIT_ONCE_STATIC_INIT; static int async_inited = 0; static void ossl_init_async(void) @@ -382,6 +385,7 @@ static void ossl_init_async(void) async_init(); async_inited = 1; } +#endif #ifndef OPENSSL_NO_ENGINE static int engine_inited = 0; @@ -483,6 +487,7 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals) if (locals == NULL) return; +#ifndef OPENSSL_NO_ASYNC if (locals->async) { #ifdef OPENSSL_INIT_DEBUG fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: " @@ -490,6 +495,7 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals) #endif ASYNC_cleanup_thread(); } +#endif if (locals->err_state) { #ifdef OPENSSL_INIT_DEBUG @@ -500,7 +506,6 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals) } OPENSSL_free(locals); - ossl_init_thread_stop_cleanup(); } void OPENSSL_thread_stop(void) @@ -575,6 +580,16 @@ void OPENSSL_cleanup(void) COMP_zlib_cleanup(); } +#ifndef OPENSSL_NO_ASYNC + if (async_inited) { +# ifdef OPENSSL_INIT_DEBUG + fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " + "async_deinit()\n"); +# endif + async_deinit(); + } +#endif + #ifndef OPENSSL_NO_ENGINE if (engine_inited) { # ifdef OPENSSL_INIT_DEBUG @@ -593,6 +608,8 @@ void OPENSSL_cleanup(void) ERR_free_strings(); } + ossl_init_thread_stop_cleanup(); + #ifdef OPENSSL_INIT_DEBUG fprintf(stderr, "OPENSSL_INIT: OPENSSL_INIT_library_stop: " "CRYPTO_cleanup_all_ex_data()\n"); @@ -664,10 +681,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) CRYPTO_w_unlock(CRYPTO_LOCK_INIT); } +#ifndef OPENSSL_NO_ASYNC if (opts & OPENSSL_INIT_ASYNC) { ossl_init_once_run(&async, ossl_init_async); } - +#endif #ifndef OPENSSL_NO_ENGINE if (opts & OPENSSL_INIT_ENGINE_OPENSSL) { ossl_init_once_run(&engine_openssl, ossl_init_engine_openssl);