<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:\7B49\7EBF;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@\7B49\7EBF";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>All,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>We are testing OpenSIPS for simple redirect call scenarios. We expect OpenSIPS to try all Contact headers in the SIP 3xx respectively based on q value. For the SIP 3xx with multiple Contact headers, our configuration works fine. But for the SIP 3xx with one Contact header, it does not work.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Configuration:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>failure_route[1] {<o:p></o:p></p><p class=MsoNormal>  if (t_check_status("3[0-9][0-9]")) {<o:p></o:p></p><p class=MsoNormal>    get_redirects("*");<o:p></o:p></p><p class=MsoNormal>    serialize_branches(1);<o:p></o:p></p><p class=MsoNormal>    next_branches();<o:p></o:p></p><p class=MsoNormal>    t_relay();<o:p></o:p></p><p class=MsoNormal>  }<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>From OpenSIPS source code, we know that<o:p></o:p></p><p class=MsoNormal>1.            get_redirects puts the 1st Contact header URI into RURI, puts the 2nd Contact header URI into the 1st branch, etc.<o:p></o:p></p><p class=MsoNormal>2.            serialize_branches sorts RURI and all branches, and puts them in a AVP.<o:p></o:p></p><p class=MsoNormal>3.            next_branches extracts next hop from the AVP.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>When there are multiple Contact headers, all (get_redirects, serialize_branches and next_branch) work fine. When there is only one Contact header, get_redirects still works fine. But since there is not branch, serialize_branches does nothing especially does not set the AVP, then next_branches does nothing too since the AVP is empty.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The questions are, <o:p></o:p></p><p class=MsoNormal>1.            Should serialize_branches still set the AVP when there is one Contact header?<o:p></o:p></p><p class=MsoNormal>2.            According the comments for next_branches, in failure route, all Contact headers should be mapped to branches. Then, is the behavior of get_redirects, which can only be called in failure route block, correct?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If these are the designed behaviors, we can live on it. It is easy to write a working configuration.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-align:justify;text-justify:inter-ideograph'>Di-Shi Sun<o:p></o:p></p><p class=MsoNormal style='text-align:justify;text-justify:inter-ideograph'>VoIP Routing, Accounting, Security<o:p></o:p></p><p class=MsoNormal style='text-align:justify;text-justify:inter-ideograph'><a href="http://www.transnexus.com/"><span style='color:blue'>www.TransNexus.com</span></a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>