Hello list,

I have a TLS server which is started on demand in a multithreaded (pthread) 
application. The TLS server is one thread which is being started and stopped. 
At first start, the TLS server initialized with SSL_CTX_new with 
TLS_server_method works as expected, after cleaning up, eliminating the thread 
and starting it again at a later time in the same process, SSL_CTX_new returns 
NULL. I’ve been digging deeper into the initialization code, and found out that 
in crypto/threads_pthread.c, function CRYPTO_THREAD_set_local the call to 
pthread_setspecific returns a value != 0 (in my case: 22). The error queue of 
openSSL stays empty. The same code works with openSSL 1.1.0 in all versions.
Some posts googled state that before usage, be sure to run OPENSSL_init_ssl 
(which I do, even if not required to my analysis since it’s already called in 
one of the called functions deeper in the library).
Am I missing something in a multithreaded environment?

Regards,
Harald

Reply via email to