diff options
-rw-r--r-- | crypto/async/async.c | 2 | ||||
-rw-r--r-- | crypto/include/internal/async.h | 1 | ||||
-rw-r--r-- | crypto/init.c | 10 |
3 files changed, 11 insertions, 2 deletions
diff --git a/crypto/async/async.c b/crypto/async/async.c index 67e19c730f..b4ba561888 100644 --- a/crypto/async/async.c +++ b/crypto/async/async.c @@ -351,8 +351,6 @@ int async_init(void) return 1; } -/* TODO: FIXME: This needs to be called by something!!! */ -void async_deinit(void); void async_deinit(void) { CRYPTO_THREAD_cleanup_local(&ctxkey); diff --git a/crypto/include/internal/async.h b/crypto/include/internal/async.h index e5d426baf3..76fe4d1399 100644 --- a/crypto/include/internal/async.h +++ b/crypto/include/internal/async.h @@ -58,4 +58,5 @@ #include <openssl/async.h> int async_init(void); +void async_deinit(void); diff --git a/crypto/init.c b/crypto/init.c index cbe07df2a2..613606ebdc 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -580,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 |