aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crypto/async/async.c2
-rw-r--r--crypto/include/internal/async.h1
-rw-r--r--crypto/init.c10
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