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