The global thread local keys were not being deinited properly in async.
Reviewed-by: Rich Salz <rsalz@openssl.org>
return 1;
}
-/* TODO: FIXME: This needs to be called by something!!! */
-void async_deinit(void);
void async_deinit(void)
{
CRYPTO_THREAD_cleanup_local(&ctxkey);
#include <openssl/async.h>
int async_init(void);
+void async_deinit(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