Skip to content

Commit

Permalink
tls: new option tls_threads_mode = 2
Browse files Browse the repository at this point in the history
- use pthread_atfork to force all thread-locals
  to 0x0 after fork()

(cherry picked from commit 464299c)
  • Loading branch information
space88man committed Mar 23, 2024
1 parent d20df6f commit cf764b4
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions src/modules/tls/tls_mod.c
Expand Up @@ -337,6 +337,20 @@ static tls_domains_cfg_t* tls_use_modparams(void)
}
#endif

/* global config tls_threads_mode = 2
* - force all thread-locals to be 0x0 after fork()
* - with OpenSSL loaded the largest value observed
* is < 10
*
*/
static void fork_child(void)
{
for(int k = 0; k < 16; k++) {
if(pthread_getspecific(k) != 0)
pthread_setspecific(k, 0x0);
}
}

static int mod_init(void)
{
int method;
Expand Down Expand Up @@ -446,6 +460,9 @@ static int mod_init(void)
ksr_module_set_flag(KSRMOD_FLAG_POSTCHILDINIT);
}
#endif
if(ksr_tls_threads_mode == 2) {
pthread_atfork(NULL, NULL, &fork_child);
}
return 0;
error:
tls_h_mod_destroy_f();
Expand Down

0 comments on commit cf764b4

Please sign in to comment.