Module: kamailio
Branch: 4.2
Commit: aa87917aa27bcc9f3f71da4cead1b51d17e75da7
URL: 
https://github.com/kamailio/kamailio/commit/aa87917aa27bcc9f3f71da4cead1b51d17e75da7

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2015-02-04T18:08:01+01:00

sl: re-attempt to bind to tm after all mods init

- handle the situation when tm is initialized after the sl module
- re-binding is done on child callback with rank PROC_INIT

(cherry picked from commit 85d3488c3910d447f6900df166bc6b0c16a64e9c)

---

Modified: modules/sl/sl.c

---

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

---

diff --git a/modules/sl/sl.c b/modules/sl/sl.c
index 5f3febb..27c30e8 100644
--- a/modules/sl/sl.c
+++ b/modules/sl/sl.c
@@ -164,13 +164,13 @@ static int mod_init(void)
                return -1;
        }
 
+       memset(&tmb, 0, sizeof(struct tm_binds));
        if(sl_bind_tm!=0)
        {
                if(load_tm_api(&tmb)==-1)
                {
                        LM_INFO("could not bind tm module - only stateless mode"
-                                       " available\n");
-                       sl_bind_tm=0;
+                                       " available during modules 
initialization\n");
                }
        }
 
@@ -186,6 +186,14 @@ static int child_init(int rank)
                        ERR("init_sl_stats_child failed\n");
                        return -1;
                }
+               if(sl_bind_tm!=0 && tmb.register_tmcb==0) {
+                       if(load_tm_api(&tmb)==-1) {
+                               LM_INFO("could not bind tm module - only 
stateless mode"
+                                       " available during runtime\n");
+                               sl_bind_tm=0;
+                       }
+               }
+
        }
        return 0;
 }
@@ -267,7 +275,7 @@ int send_reply(struct sip_msg *msg, int code, str *reason)
                }
        }
 
-       if(sl_bind_tm!=0)
+       if(sl_bind_tm!=0 && tmb.t_gett!=0)
        {
                t = tmb.t_gett();
                if(t!= NULL && t!=T_UNDEFINED)
@@ -324,7 +332,7 @@ int get_reply_totag(struct sip_msg *msg, str *totag)
        struct cell * t;
        if(msg==NULL || totag==NULL)
                return -1;
-       if(sl_bind_tm!=0)
+       if(sl_bind_tm!=0 && tmb.t_gett!=0)
        {
                t = tmb.t_gett();
                if(t!= NULL && t!=T_UNDEFINED)


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to