<HTML>
<HEAD>
<TITLE>Re: [OpenSIPS-Users] serialize_branches/next_branches problem</TITLE>
</HEAD>
<BODY>
<FONT FACE="Tahoma, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:10pt'>Hi Bogdan,<BR>
<BR>
It appears my therapy was not complete. &nbsp;I reinstalled a current build from the devel repository since 1.4.5 was crashing/stopping in weirder ways than 1.5.0. &nbsp;I'm back to having the two Contacts from the 302 being sent in parallel. &nbsp;Here are the debugs, the same as before I believe:<BR>
<BR>
DBG:uac_redirect:get_redirect: resume branch=0 <BR>
DBG:uac_redirect:get_redirect: checking branch=0 (added=0) <BR>
DBG:uac_redirect:get_redirect: branch=0 is a redirect (added=0) <BR>
DBG:core:parse_headers: flags=7 <BR>
DBG:core:get_hdr_field: content_length=0 <BR>
DBG:core:get_hdr_field: found end of header <BR>
DBG:uac_redirect:sort_contacts: sort_contacts: &lt;sip:<a href="+13030000000@ww.xx.119.46:5060">+13030000000@ww.xx.119.46:5060</a>;user=phone&gt; q=250 <BR>
DBG:uac_redirect:sort_contacts: sort_contacts: &lt;sip:<a href="+13030000000@ww.xx.116.46:5060">+13030000000@ww.xx.116.46:5060</a>;user=phone&gt; q=500 <BR>
DBG:uac_redirect:shmcontact2dset: adding contact &lt;sip:<a href="+13030000000@ww.xx.119.46:5060">+13030000000@ww.xx.119.46:5060</a>;user=phone&gt; <BR>
DBG:uac_redirect:shmcontact2dset: adding contact &lt;sip:<a href="+13030000000@ww.xx.116.46:5060">+13030000000@ww.xx.116.46:5060</a>;user=phone&gt; <BR>
DBG:core:serialize_branches: loaded &lt;sip:<a href="+13030000000@ww.xx.119.46:5060">+13030000000@ww.xx.119.46:5060</a>;user=phone&gt;, q=250 q_flag &lt;0&gt; <BR>
DBG:core:serialize_branches: loaded &lt;sip:<a href="+13030000000@ww.xx.116.46:5060">+13030000000@ww.xx.116.46:5060</a>;user=phone&gt;, q=500 q_flag &lt;16&gt; <BR>
DBG:core:next_branches: branch is &lt;sip:<a href="+13030000000@ww.xx.116.46:5060">+13030000000@ww.xx.116.46:5060</a>;user=phone&gt; <BR>
<BR>
<BR>
The config looks like this:<BR>
<BR>
failure_route[4] { <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Un-assign dialog profile<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unset_dlg_profile(&quot;outbound&quot;, &quot;$avp(s:dlgid_out)&quot;);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isflagset(18)) exit; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Got a 18x, so route this failure<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Check to see if we've got a permanent failure<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if !(t_check_status(&quot;302|403|404|408|500|503|606&quot;)) { &nbsp;&nbsp;# Only route advance on these response codes<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (t_check_status(&quot;302&quot;)) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resetflag(16); &nbsp;# Clear pre-routing<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setdebug(6);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!get_redirects(&quot;*&quot;)) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(20); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# No redirects, junk the call<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serialize_branches(1);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next_branches();<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setdebug(3); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setbflag(3); &nbsp;&nbsp;&nbsp;# 302 in progress<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_failure(&quot;4&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_branch(&quot;1&quot;);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resetflag(1);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(23); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Send request<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isbflagset(3)) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (next_branches()) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_failure(&quot;4&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resetflag(22);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(23); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Send request (see below)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resetbflag(3); &nbsp;# The 302's over<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setflag(22); &nbsp;&nbsp;&nbsp;# Make sure there's failure accounting<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(20); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Done trying, fail the call (t_relay an error)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;# some other stuff that isn&#8217;t used in this 302 case<BR>
}<BR>
<BR>
route[23] { &nbsp;&nbsp;&nbsp;&nbsp;# Route out<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Check to see if we're at maximum capacity<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if !(get_profile_size(&quot;outbound&quot;, &quot;$avp(s:dlgid_out)&quot;, &quot;$var(dlgsize_out)&quot;)) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlog(&quot;L_INFO&quot;, &quot;Couldn't get dialog size, continuing route-out\n&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Do some stuff to get to the next PSTN carrier <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_avp_set(&quot;$avp(s:dlgid_out)&quot;)) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set_dlg_profile(&quot;outbound&quot;, &quot;$avp(s:dlgid_out)&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlog(&quot;L_INFO&quot;, &quot;No outbound dialog profile value to assign\n&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_reply(&quot;1&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if !(t_relay(&quot;0x05&quot;)) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_reply_error();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<BR>
}<BR>
<BR>
<BR>
- Jeff<BR>
<BR>
<BR>
<BR>
On 3/31/09 4:35 AM, &quot;Bogdan-Andrei Iancu&quot; &lt;<a href="bogdan@voice-system.ro">bogdan@voice-system.ro</a>&gt; wrote:<BR>
<BR>
<FONT COLOR="#0000FF">&gt; Hi Jeff,<BR>
&gt; <BR>
&gt; Jeff Pyle wrote:<BR>
</FONT><FONT COLOR="#008000">&gt;&gt; Evidently responding publically to my own question is some sort of cheap<BR>
&gt;&gt; therapy. <BR>
</FONT><FONT COLOR="#0000FF">&gt; any therapy that has results is a good one :)<BR>
&gt; <BR>
</FONT><FONT COLOR="#008000">&gt;&gt; &nbsp;Anyway, I found some old examples of how this is supposed to work,<BR>
&gt;&gt; and all the examples included a t_on_branch() statement. &nbsp;My config did not.<BR>
&gt;&gt; I ripped off one of the examples almost character for character and it is<BR>
&gt;&gt; now behaving as one would expect. &nbsp;Apparently my lack of understanding when<BR>
&gt;&gt; it comes to branch routes was to blame all along.<BR>
&gt;&gt; &nbsp;&nbsp;<BR>
</FONT><FONT COLOR="#0000FF">&gt; Can you post the script you got to? Maybe the &quot;misconfiguration&quot; you <BR>
&gt; found is hiding some bug....<BR>
&gt; <BR>
&gt; Thanks and regards,<BR>
&gt; Bogdan</FONT></SPAN></FONT>
</BODY>
</HTML>