[Kamailio-Users] tm retransmits and times out even though reponse is received

Alex Hermann alex at speakup.nl
Thu Nov 26 12:48:22 CET 2009


On Friday 15 May 2009, Daniel-Constantin Mierla wrote:
> On 05/15/2009 02:19 PM, Alex Hermann wrote:
> > I'm seeing an increasing amount of spurious timeouts on my proxies.
> > Even though the proxy receives a "100 Trying" response immediately
>
> is this 100 coming very fast? Can you try with r5803, it was a(nother)
> fix to the race between request/reply.

I see you have put this 'fix' away in a define in rev 5868 (quoted 
below for reference). Could you elaborate on the possible side-effect? 
I have run a proxy with r5803 enabled for quite some time without 
noticable side effects. What effect should I've been on the lookout for?

And I have a question on patch 5803: the fix seems to depend on the fact 
that another process fills the 'last_received' field on an incoming reply. 
I assume 't' is in shared memory then, but I fail to see any locking 
around the access to this structure. Where is the locking in tm?



r5801 | miconda | 2009-04-23 11:48:08 +0200 (Thu, 23 Apr 2009) | 4 lines

- narrow reply race time frame
- patch by Zappasodi Daniele
- note: new devel on svn trunk has stopped and continues on sip-router.org git, tm is the only one K module not imported in SR and this patch is applied to have it when 
comparing additional features in K and for easier backporting

Index: modules/tm/t_fwd.c
===================================================================
--- modules/tm/t_fwd.c  (revision 5800)
+++ modules/tm/t_fwd.c  (revision 5801)
@@ -719,7 +719,11 @@
                                        -p_msg->REQ_METHOD);
                        }

-                       start_retr( &t->uac[i].request );
+                       if(p_msg->REQ_METHOD==METHOD_INVITE
+                                       && t->uac[i].last_received>=100)
+                               LM_DBG("Last received %d\n",t->uac[i].last_received);
+                       else
+                               start_retr( &t->uac[i].request );
                        set_kr(REQ_FWDED);
                }
        }


r5868 | miconda | 2009-06-02 11:25:18 +0200 (Tue, 02 Jun 2009) | 2 lines

- ifdef'ed last recevied checked added last time (possible side effects to be more investigated)

Index: modules/tm/t_fwd.c
===================================================================
--- modules/tm/t_fwd.c  (revision 5867)
+++ modules/tm/t_fwd.c  (revision 5868)
@@ -718,11 +718,12 @@
                                run_trans_callbacks( TMCB_REQUEST_BUILT, t, p_msg,0,
                                        -p_msg->REQ_METHOD);
                        }
-
+#ifdef TM_FWD_LRCV_CHECK
                        if(p_msg->REQ_METHOD==METHOD_INVITE
                                        && t->uac[i].last_received>=100)
                                LM_DBG("Last received %d\n",t->uac[i].last_received);
                        else
+#endif
                                start_retr( &t->uac[i].request );
                        set_kr(REQ_FWDED);
                }




-- 
Greetings,

Alex Hermann




More information about the Users mailing list