Module: kamailio
Branch: 5.7
Commit: cf764b499fbc3f28f7ed080b488e0e8111687cf8
URL: 
https://github.com/kamailio/kamailio/commit/cf764b499fbc3f28f7ed080b488e0e8111687cf8

Author: S-P Chan <shihping.c...@gmail.com>
Committer: S-P Chan <shihping.c...@gmail.com>
Date: 2024-03-23T21:09:14+08:00

tls: new option tls_threads_mode = 2

- use pthread_atfork to force all thread-locals
  to 0x0 after fork()

(cherry picked from commit 464299c202f3ba963aed821b777075397e843856)

---

Modified: src/modules/tls/tls_mod.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/cf764b499fbc3f28f7ed080b488e0e8111687cf8.diff
Patch: 
https://github.com/kamailio/kamailio/commit/cf764b499fbc3f28f7ed080b488e0e8111687cf8.patch

---

diff --git a/src/modules/tls/tls_mod.c b/src/modules/tls/tls_mod.c
index c34c9933b1d..51e88bed51f 100644
--- a/src/modules/tls/tls_mod.c
+++ b/src/modules/tls/tls_mod.c
@@ -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;
@@ -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();

_______________________________________________
Kamailio (SER) - Development Mailing List
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org

Reply via email to