Author: rjung
Date: Sun Aug 27 16:24:08 2017
New Revision: 1806376
URL: http://svn.apache.org/viewvc?rev=1806376&view=rev
Log:
Fix thread local key leak introduced in r1781943.
The leak breaks TC trunk test TestDefaultServletEncoding
which executes more than 2500 APR init/terminate.
Modified:
tomcat/native/trunk/native/src/ssl.c
Modified: tomcat/native/trunk/native/src/ssl.c
URL:
http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/ssl.c?rev=1806376&r1=1806375&r2=1806376&view=diff
==============================================================================
--- tomcat/native/trunk/native/src/ssl.c (original)
+++ tomcat/native/trunk/native/src/ssl.c Sun Aug 27 16:24:08 2017
@@ -52,6 +52,7 @@ struct CRYPTO_dynlock_value {
#if ! (defined(WIN32) || defined(WIN64))
apr_threadkey_t *thread_exit_key;
+static int threadkey_initialized = 0;
#endif
#endif
@@ -331,6 +332,12 @@ static apr_status_t ssl_init_cleanup(voi
return APR_SUCCESS;
ssl_initialized = 0;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L && ! (defined(WIN32) ||
defined(WIN64))
+ if (threadkey_initialized) {
+ threadkey_initialized = 0;
+ apr_threadkey_private_delete(thread_exit_key);
+ }
+#endif
if (tcn_password_callback.cb.obj) {
JNIEnv *env;
tcn_get_java_env(&env);
@@ -766,6 +773,7 @@ TCN_IMPLEMENT_CALL(jint, SSL, initialize
tcn_ThrowAPRException(e, err);
return (jint)err;
}
+ threadkey_initialized = 1;
#endif
/* Initialize thread support */
ssl_thread_setup(tcn_global_pool);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]