<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:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Courier New";
        panose-1:2 7 3 9 2 2 5 2 4 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:Calibri;}
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;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:Calibri;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Courier;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:Calibri;
        color:windowtext;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:Calibri;
        color:windowtext;}
span.EmailStyle23
        {mso-style-type:personal;
        font-family:Calibri;
        color:windowtext;}
span.EmailStyle24
        {mso-style-type:personal;
        font-family:Calibri;
        color:windowtext;}
span.EmailStyle25
        {mso-style-type:personal-reply;
        font-family:Calibri;
        color:windowtext;}
span.msoIns
        {mso-style-type:export-only;
        mso-style-name:"";
        text-decoration:underline;
        color:teal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">Bogdan,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thanks for your suggestion to modify the whole RURI. While this will work for our modifications, we have no control over how modules like Dynamic Routing access the RURI and that module’s functions are also
 causing the error to occur. So this will not work.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">However, I have found that using revert_uri within failure_route will remove the user params prior to performing routing and so prevents the issue. We can then add the user params back before sending out the
 next branch. This workaround is of course specific to our current use case, where we are always injecting the user params ourselves. It would not work if the user params were present in the original received RURI.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">We will continue with this workaround until we can upgrade to version 2. Thanks again for your help.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Ben Newlin<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black">Bogdan-Andrei Iancu <bogdan@opensips.org><br>
<b>Date: </b>Wednesday, July 5, 2017 at 10:46 AM<br>
<b>To: </b>Ben Newlin <Ben.Newlin@genesys.com>, OpenSIPS users mailling list <users@lists.opensips.org><br>
<b>Subject: </b>Re: [OpenSIPS-Users] SIP URI User Parameters<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman""><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><tt><span style="font-size:10.0pt">Hi Ben,</span></tt><span style="font-size:10.0pt;font-family:"Courier New""><br>
<br>
<tt>The fix is present on trunk (2.4), 2.3 and 2.2 (the currently maintained versions). Indeed, the 1.11 does not have the fix. You can easily apply the fix on your 1.11 code via this patch -
<a href="https://github.com/OpenSIPS/opensips/commit/91c14ce679f80c8b4888769004c08039da2fc805.patch">https://github.com/OpenSIPS/opensips/commit/91c14ce679f80c8b4888769004c08039da2fc805.patch</a> . It should be 100% compatible.
</tt><br>
<br>
<tt>Otherwise, you can try to get rid of user=phone in the URI by doing changes over the full RURI (to avoid its parsing) - like a subst over the full RURI.</tt><br>
<br>
<tt>Regards,</tt><br>
<br>
</span><o:p></o:p></p>
<pre>Bogdan-Andrei Iancu<o:p></o:p></pre>
<pre>  OpenSIPS Founder and Developer<o:p></o:p></pre>
<pre>  <a href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>OpenSIPS Bootcamp 2017, Houston, US<o:p></o:p></pre>
<pre>  <a href="http://opensips.org/training/OpenSIPS_Bootcamp_2017.html">http://opensips.org/training/OpenSIPS_Bootcamp_2017.html</a><o:p></o:p></pre>
<div>
<p class="MsoNormal">On 07/05/2017 05:32 PM, Ben Newlin wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="font-size:11.0pt">Bogdan,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thanks for your work to find the issue. I do agree that the usage of the “user=phone” parameter is not well defined and a bit ambiguous. However, I think your action is correct as it should be the responsibility
 of the end gateway to do any necessary SIP -> Tel conversion, not the proxy. And especially not a partial conversion. :)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Just to clarify, where was the change you made submitted? I know 1.11 is no longer supported, but we are still using it and are not ready to upgrade yet due to the many script changes necessary to use 2.X.
 If this change cannot be added to 1.11, do you have any suggestions for a workaround? I haven’t found anything yet, but I’ve yet to try using revert_uri in the failure route to remove the user params before any other processing. Do you think this will work?</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div>
<p class="MsoNormal" style="text-autospace:none"><span style="color:#FC3619">Ben Newlin</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;color:#838487">Lead Voice Network Engineer, PureCloud</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt"><img border="0" width="291" height="9" id="_x0000_i1042" src="cid:image001.png@01D2F590.DDA52890"></span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><b><span style="font-size:6.0pt;color:#FC3619"> </span></b><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:6.0pt;color:#FC3619">O</span><span style="font-size:10.0pt">
<span style="color:#838487">+1 317.957.1009</span></span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><u><span style="font-size:10.0pt;color:#0B4CB4"><a href="mailto:ben.newlin@genesys.com">ben.newlin@genesys.com</a></span></u><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt"><img border="0" width="291" height="9" id="_x0000_i1041" src="cid:image001.png@01D2F590.DDA52890"></span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><a href="http://www.genesys.com/"><span style="color:#838487;text-decoration:none"><br>
</span></a><o:p></o:p></p>
</div>
<p class="MsoNormal"><a href="https://twitter.com/Genesys"><span style="color:#838487;text-decoration:none"><img border="0" width="25" height="23" id="_x0000_i1039" src="cid:image002.png@01D2F590.DDA52890"></span></a><a href="http://www.linkedin.com/company/601919?trk=tyah"><span style="color:#838487;text-decoration:none"><img border="0" width="25" height="23" id="_x0000_i1038" src="cid:image003.png@01D2F590.DDA52890"></span></a><a href="https://plus.google.com/+Genesyslab?rel=publisher"><span style="color:#838487;text-decoration:none"><img border="0" width="23" height="23" id="_x0000_i1037" src="cid:image004.png@01D2F590.DDA52890"></span></a><a href="https://www.facebook.com/Genesys/"><span style="color:#838487;text-decoration:none"><img border="0" width="25" height="23" id="_x0000_i1036" src="cid:image005.png@01D2F590.DDA52890"></span></a><a href="https://www.youtube.com/Genesys"><span style="color:#838487;text-decoration:none"><img border="0" width="25" height="23" id="_x0000_i1035" src="cid:image006.png@01D2F590.DDA52890"></span></a><a href="http://blog.genesys.com/"><span style="color:#838487;text-decoration:none"><img border="0" width="23" height="23" id="_x0000_i1034" src="cid:image007.png@01D2F590.DDA52890"></span></a><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black">Bogdan-Andrei Iancu
<a href="mailto:bogdan@opensips.org"><bogdan@opensips.org></a><br>
<b>Date: </b>Monday, July 3, 2017 at 11:46 AM<br>
<b>To: </b>Ben Newlin <a href="mailto:Ben.Newlin@genesys.com"><Ben.Newlin@genesys.com></a>, OpenSIPS users mailling list
<a href="mailto:users@lists.opensips.org"><users@lists.opensips.org></a><br>
<b>Subject: </b>Re: [OpenSIPS-Users] SIP URI User Parameters</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman""> </span><o:p></o:p></p>
</div>
<p class="MsoNormal"><tt><span style="font-size:10.0pt">Hi Ben,</span></tt><span style="font-size:10.0pt;font-family:"Courier New""><br>
<br>
<tt>Thank you for your digging and reporting. Following your leads I found some old strange behavior of the parse_uri() function - the function responsible for parsing the URIs in OpenSISP.
</tt><br>
</span><br>
<br>
<br>
<o:p></o:p></p>
<pre>For some ancient and unknown reasons, a SIP URI with user=phone was automatically converted to a TEL URI. Such conversion, automatically done, is dangerous - there is nothing in the RFC3261 stating something like this. Even more, the conversion is not complete - besides moving the username parameters to URI parameters, the domain is not stripped and the TEL not added.<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>Basically, the existing code was converting:<o:p></o:p></pre>
<pre>        <a href="sip:username;bla=foo@host.com;param1=1;param2=2;user=phone">sip:username;bla=foo@host.com;param1=1;param2=2;user=phone</a><o:p></o:p></pre>
<pre>to<o:p></o:p></pre>
<pre>        <a href="sip:username@host.com;bla=foo">sip:username@host.com;bla=foo</a><o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>I tried to dig around the subject, but not more - there is no reference or recommendation for such a behavior. If you have the time, see these links:  <o:p></o:p></pre>
<pre>* SIP implementer -> <a href="https://lists.cs.columbia.edu/pipermail/sip-implementors/2013-February/028837.html">https://lists.cs.columbia.edu/pipermail/sip-implementors/2013-February/028837.html</a><o:p></o:p></pre>
<pre>* SIP Core -> <a href="https://www.ietf.org/mail-archive/web/sipcore/current/msg01783.html">https://www.ietf.org/mail-archive/web/sipcore/current/msg01783.html</a><o:p></o:p></pre>
<pre>* voip info -> <a href="https://www.voip-info.org/wiki/view/SIP+URI">https://www.voip-info.org/wiki/view/SIP+URI</a> (Telephone numbers section)<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>On voip-info there is a recommendation on how to compare a SIP uri with a TEL uri (in terms of username and parameters parts), but nothing of a "must" conversion.<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>So, I disabled the guilty code in OpenSIPS, and it should work as expected now.<o:p></o:p></pre>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><br>
<tt>Best regards,</tt><br>
<br>
<br>
<br>
</span><o:p></o:p></p>
<pre>Bogdan-Andrei Iancu<o:p></o:p></pre>
<pre>  OpenSIPS Founder and Developer<o:p></o:p></pre>
<pre>  <a href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a><o:p></o:p></pre>
<pre> <o:p></o:p></pre>
<pre>OpenSIPS Bootcamp 2017, Houston, US<o:p></o:p></pre>
<pre>  <a href="http://opensips.org/training/OpenSIPS_Bootcamp_2017.html">http://opensips.org/training/OpenSIPS_Bootcamp_2017.html</a><o:p></o:p></pre>
<p class="MsoNormal"><span style="font-family:"Times New Roman""><o:p> </o:p></span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family:"Times New Roman""><br>
<br>
<o:p></o:p></span></p>
</div>
</body>
</html>