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); }