Ensure Async is deinited properly

The global thread local keys were not being deinited properly in async.

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Matt Caswell 2016-03-02 16:52:43 +00:00
parent 224905f8aa
commit ed49f43a03
3 changed files with 11 additions and 2 deletions

View File

@ -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);

View File

@ -58,4 +58,5 @@
#include <openssl/async.h>
int async_init(void);
void async_deinit(void);

View File

@ -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