<div dir="ltr">Hi Bogdan & Co, I think I've narrowed down failure to a specific revision in the 2.3 branch, see <a href="https://travis-ci.org/sippy/voiptests/builds/260009545">https://travis-ci.org/sippy/voiptests/builds/260009545</a>:<div><br></div><div><div>commit 1eb4ec0f78f43f6ff546de49bc72e513876fb86b</div><div>Author: Bogdan-Andrei Iancu <<a href="mailto:bogdan@opensips.org">bogdan@opensips.org</a>></div><div>Date:   Thu Mar 9 15:37:01 2017 +0200</div><div><br></div><div>    Added support for dynamic branch manipulation</div><div><br></div><div>    New functions were added to allow remote injecting of new branches into an ongoing transaction:</div><div>    * t_inject_branches(source, flags) - injects new branches;</div><div>    * t_wait_for_new_branches() - instruct transaction to wait more for possible new injections.</div></div><div><br></div><div>Looking at the diff in question, the following piece of code looks suspicious, but it might be something else from that change:<br></div><div><br></div><div><div>@@ -1244,7 +1301,18 @@ inline static int w_t_relay( struct sip_msg  *p_msg , char *proxy, char *flags)</div><div><br></div><div>                update_cloned_msg_from_msg( t->uas.request, p_msg);</div><div><br></div><div>-               ret = t_forward_nonack( t, p_msg, p);</div><div>+               if (route_type==FAILURE_ROUTE) {</div><div>+                       /* If called from failure route we need reset the branch counter to</div><div>+                        * ignore the previous set of branches (already terminated) */</div><div>+                       ret = t_forward_nonack( t, p_msg, p, 1/*reset*/);</div><div>+               } else {</div><div>+                       /* if called from request route and the transaction was previously</div><div>+                        * created, better lock here to avoid any overlapping with</div><div>+                        * branch injection from other processes */</div><div>+                       LOCK_REPLIES(t);</div><div>+                       ret = t_forward_nonack( t, p_msg, p, 1/*reset*/);</div><div>+                       UNLOCK_REPLIES(t);</div><div>+               }</div><div>                if (ret<=0 ) {</div><div>                        LM_ERR("t_forward_nonack failed\n");</div><div>                        ret = t_relay_inerr2scripterr();</div><div>@@ -1262,7 +1330,8 @@ route_err:</div></div><div><br></div><div>The revisions right before that work, none after does. Hopefully it will give you some clues. Let me know if any other info is needed.</div><div><br></div><div>-Max</div></div>