<div dir="ltr">Hi Mark,<div><br><div>Glad to hear you made it all work! Looks like it was a real challenge.</div><div><br></div><div>Good luck,</div></div><div>Stas</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 26, 2020 at 8:47 AM Mark Allen <<a href="mailto:mark@allenclan.co.uk">mark@allenclan.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Stas - thanks for getting back to me. That helped me move forward a lot - particularly where you included what you see in the Path field - it helped to exclude a range of possible causes for the issues I was seeing. <div><br></div><div>> <span style="font-family:monospace">If you do not have "path" set in your case the problem is probably there.</span></div><br><div>Yes, because of how the "lumps" system works, and because WebRTC phone is connecting directly to OpenSIPS server, the incoming REGISTER didn't have a path, so to get the path saved in "location" I had to loop back to OpenSIPS again (thanks very much Johan De Clercq for filling in that part of the jigsaw). That then introduced some other problems that I had to resolve (particularly with RTPEngine going crazy looping back on itself and sending CPU temperature over 100degC - but that's another story!), but I've now got AOR throttling working with the mid-registrar successfully. Still a few bits to tweak with my script but it looks like I'm on the home straight. Thanks once again for all your help</div><div><br></div><div>cheers,</div><div><br></div><div>Mark</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 21 Aug 2020 at 14:59, Stas Kobzar <<a href="mailto:staskobzar@gmail.com" target="_blank">staskobzar@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello Mark,<div><br></div><div>In my case I do have a path in the location record. Here is my example from "ul show" (I changed my real domain and IPs):</div><div><font face="monospace">AOR:: <a href="mailto:9170@example.com" target="_blank">9170@example.com</a><br>                Contact:: sip:suvp4v56@1p6pc0g6m3ml.invalid;transport=ws Q=<br>                        Expires:: 494<br>                        Callid:: i1tmiaipa3l2nvvhmairvu<br>                        Cseq:: 28<br>                        User-agent:: JsSIP 3.5.3<br>                        Path:: <sip:10.0.0.186:8060;r2=on;lr>,<sip:10.0.0.186:8061;transport=wss;r2=on;lr;received=sip:<a href="http://10.0.0.213:47326" target="_blank">10.0.0.213:47326</a>><br>                        State:: CS_SYNC<br>                        Flags:: 0<br>                        Cflags::<br>                        Socket:: udp:<a href="http://10.0.0.185:5060" target="_blank">10.0.0.185:5060</a><br>                        Methods:: 5503<br>                        SIP_instance:: <urn:uuid:6d815278-4885-4468-b07b-eca6ab80e2d4></font><br></div><div><br></div><div>And here is my mysql location record:</div><div><br></div><div><font face="monospace">mysql> select contact, path from locations where username =9170;<br>+------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+<br>| contact                                        | path                                                                                                                     |<br>+------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+<br>| sip:suvp4v56@1p6pc0g6m3ml.invalid;transport=ws | <sip:199.182.135.186:8060;r2=on;lr>,<sip:199.182.135.186:8061;transport=wss;r2=on;lr;received=sip:<a href="http://107.179.246.213:47364" target="_blank">107.179.246.213:47364</a>> |<br>+------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------+</font><br></div><div><font face="monospace"><br></font></div><div><font face="monospace">If you do not have "path" set in your case the problem is probably there.</font></div><div><font face="monospace">My lookup is not mid_register but it is close to what you have. I only use parameter "m" to lookup in memory.</font></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 21, 2020 at 9:19 AM Mark Allen <<a href="mailto:mark@allenclan.co.uk" target="_blank">mark@allenclan.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">What am I looking for? <div dir="auto"><br></div><div dir="auto">INVITE from Asterisk to Opensips looks fine. Contact info from "location" matches that seen in console for web phone. </div><div dir="auto"><br></div><div dir="auto">Problem seems to be that the address is not recognised as a web socket rather than a host name. It's not NATed but tried fix_nated_register() and fix_nated_contact() but it made no difference.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 21 Aug 2020, 13:23 Slava Bendersky via Users, <<a href="mailto:users@lists.opensips.org" target="_blank">users@lists.opensips.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:"lucida console",sans-serif;font-size:12pt;color:rgb(0,0,0)"><div>Please check contact header.</div><div><br></div><div>volga629</div><div><br></div><hr id="gmail-m_7154104968014351130gmail-m_6722782965391900471gmail-m_-4225256308070811885gmail-m_6575100830551890223m_-1549091814140111905zwchr"><div><b>From: </b>"Mark Allen" <<a href="mailto:mark@allenclan.co.uk" rel="noreferrer" target="_blank">mark@allenclan.co.uk</a>><br><b>To: </b>"OpenSIPS users mailling list" <<a href="mailto:users@lists.opensips.org" rel="noreferrer" target="_blank">users@lists.opensips.org</a>><br><b>Sent: </b>Friday, August 21, 2020 8:08:18 AM<br><b>Subject: </b>Re: [OpenSIPS-Users] 3.1 - Mid_Registrar - AOR throttling with        WebRTC failing<br></div><div><br></div><div><div dir="ltr">I've not received any feedback on this regarding whether or not what I'm doing should be working. Trying to find a workaround has just led to a number of dead-ends. Can anyone please help me with this?<br><div>We are using mid-registrar with AOR Throttling talking to Asterisk/FreePBX. We have OpenSIPS 3.1 running on Debian Buster. For SIP phones, physical and softphones, connected on our LAN, all works fine. Where we hit problems is with WebRTC phones. <br></div><br><div>WebRTC phone registers via mid-registrar without a problem. However, a call coming from Asterisk (e.g. extension --> extension) fails with an error like:</div><br><div>  476 Unresolvable destination</div><br><div>...and a syslog entry...</div><br><div>  ERROR:core:sip_resolvehost: forced proto 6 not matching sips uri<br>  CRITICAL:core:mk_proxy: could not resolve hostname: "cfdtugr3cntl.invalid"<br>  ERROR:tm:uri2proxy: bad host name in URI <sips:11023@cfdtugr3cntl.invalid;rtcweb-breaker=yes;transport=wss><br>  ERROR:tm:t_forward_nonack: failure to add branches<br></div><br><div>We can get calls to WebRTC from Asterisk working via OpenSIPS if we are only using registration throttling. As this establishes a 1:1 relationship, by using <span style="color:rgb(0,0,0);white-space:pre-wrap">add_path_received() we get Asterisk to include a Route which bypasses the resolvehost problem. However, with multiple endpoints registered to a single OpenSIPS AOR with AOR throttling, this workaround obviously won't work. How can I set up OpenSIPS so that we can have multiple endpoints, including WebRTC ones, registered to a single OpenSIPS AOR and have calls successfully reach the WebRTC phones? </span></div><br><br><br><br><br><br><br></div><br><div><div dir="ltr">On Mon, 3 Aug 2020 at 08:44, Mark Allen <<a href="mailto:mark@allenclan.co.uk" rel="nofollow noopener noreferrer noreferrer" target="_blank">mark@allenclan.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I don't know if anyone has had a chance to look at my problem but I wonder if at least I could get an opinion on the following:<br><div>1 - Should I be seeing the path saved in the appropriate column in the "location" table?<br></div><div>2 - Am I using mid_registrar_save() and mid_registrar_lookup() with path support correctly in my script?<br></div><div>3 - have I correctly understood how to combine WebRTC with mid-registrar module, path, and AOR throttling so that it should work for calls originating from the main registrar?</div><br><div>I'm stuck on how to move forward with this</div><br><div>Cheers,</div><br><div>Mark</div><br><div><div>Relevant code snippets...</div><br><div><font face="monospace">loadmodule "mid_registrar.so"<br>modparam("mid_registrar", "mode", 2) /* 0 = mirror / 1 = ct / 2 = AoR */<br>modparam("mid_registrar", "outgoing_expires", 3600)<br></font></div><div><font face="monospace"><br></font></div><div><font face="monospace">add_path_received();<br>$avp(returncode) = mid_registrar_save("location","p0v");<br>switch ($avp(returncode)) {<br>    case 1:<br>        route(resolve_registrar);<br>        $ru = "sip:" + $avp(main_registrar) + ":5060";<br>        t_on_failure("1");<br>        t_relay();<br>        break;<br>    case 2:<br>        break;<br>    default:<br>}<br></font></div><div><font face="monospace"><br></font></div><div><font face="monospace">if (!mid_registrar_lookup("location")) {<br>    t_reply(404, "Not Found");<br>    exit;<br>}</font><br></div><br><br><div>NB - route(resolve_registrar) sets the variable $avp(main_registrar) to the IP address of the Asterisk server</div></div></div><br><div><div dir="ltr">On Thu, 30 Jul 2020 at 09:16, Mark Allen <<a href="mailto:mark@allenclan.co.uk" rel="nofollow noopener noreferrer noreferrer" target="_blank">mark@allenclan.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>We are working on a test setup, hoping to move to a production system in mid-August. We want to use mid-registrar AOR throttling. Users will connect through OpenSIPS using a combination of SIP and WebRTC endpoints, registering to an extension on an Asterisk main-registrar...<br></div><br><div><font face="monospace">              +----------+ </font></div><div><font face="monospace"><SIP>    ---> |         </font><span style="font-family:monospace"> |      </span><span style="font-family:monospace">+----------+  </span></div><div><font face="monospace"><SIP>    ---> | OpenSIPS | ---> | Asterisk |</font></div><div><font face="monospace"><WebRTC> ---> |          |      +----------+  </font></div><div><font face="monospace">              +----------+</font></div><div><br><div>Multiple SIP phones (hardware or softphones) registering via an OpenSIPS 3.1 mid_registration AOR is working fine. A call to the extension number on Asterisk results in all mid-registered SIP extensions ringing and when one answers, the other devices register a missed call. So far, so good.</div></div><br><div>With 3.0 - we had a problem with WebRTC "phones" (even when just using mid_registrar in "mirroring" mode). Webphone could register and call other phones without a problem. However, calls to the WebPhone failed - there was a problem with the WebSocket addressing giving "476 Unresolvable destination" when the call originates from the main registrar - e.g. one extension calling another. The /var/log/syslog entry said...</div><br><div><font face="monospace">  ERROR:core:sip_resolvehost: forced proto 6 not matching sips uri<br>  CRITICAL:core:mk_proxy: could not resolve hostname: "4xp44jxl0qq0.invalid"<br>  ERROR:tm:uri2proxy: bad host name in URI <sips:11001 at 4xp44jxl0qq0.invalid;rtcweb-breaker=yes;transport=wss><br>  ERROR:tm:t_forward_nonack: failure to add branches</font><br></div><br><div>Stas Kobar gave me a way to resolve this  - <a href="http://lists.opensips.org/pipermail/users/2020-July/043443.html" rel="nofollow noopener noreferrer noreferrer" target="_blank">http://lists.opensips.org/pipermail/users/2020-July/043443.html</a>  As we were using 3.0, I used the "path" module and  "add_path_received()" to handle this for WebRTC. This worked for a single device registered to an address. However, as far as I could see, using "path" effectively bypassed the "contact" address held in the OpenSIPS "location" table so it didn't work for AOR throttling.</div><br><div>I was hoping that, with mid_registrar on 3.1 baking in path support, I could just use "mid_registrar_save('location','p0v')" to store the WebRTC destination path in the "location" table. Then, with a call to the WebRTC endpoint from the main registrar, "mid_registrar_lookup('location')" would use the stored path from the "location" table to send traffic on to the WebRTC phone and it would work fine with AOR throttling. However, that's not happening, and looking at the "location" table, no path seems to be being stored.</div><br><div>If I register a WebRTC "phone" first, the path is included on the registration SIP message sent from OpenSIPS to Asterisk. If I then register additional SIP phones on OpenSIPS, AOR throttling works, because, when the call originates from Asterisk it includes the "route" HF that points to the WebRTC destination. However, if a SIP phone registers first, Asterisk doesn't get the WebRTC path, so calls fail to reach the WebRTC destination because it tries to use the first registered SIP phone's path.</div><br><div>So - 2 questions really...<br></div><br><div>1 - Can I use AOR throttling with WebRTC (I can't guarantee that the WebRTC endpoint will be the first to register or that there will only be one WebRTC endpoint)</div><br><div>2 - If the answer to 1 is yes, what am I doing wrong?</div><br><div>Relevant code snippets...</div><br><div><font face="monospace">loadmodule "mid_registrar.so"<br>modparam("mid_registrar", "mode", 2) /* 0 = mirror / 1 = ct / 2 = AoR */<br>modparam("mid_registrar", "outgoing_expires", 3600)<br></font></div><div><font face="monospace"><br></font></div><div><font face="monospace">add_path_received();<br>$avp(returncode) = mid_registrar_save("location","p0v");<br>switch ($avp(returncode)) {<br>    case 1:<br>        route(resolve_registrar);<br>        $ru = "sip:" + $avp(main_registrar) + ":5060";<br>        t_on_failure("1");<br>        t_relay();<br>        break;<br>    case 2:<br>        break;<br>    default:<br>}<br></font></div><div><font face="monospace"><br></font></div><div><font face="monospace">if (!mid_registrar_lookup("location")) {<br>    t_reply(404, "Not Found");<br>    exit;<br>}</font><br></div><br><br><div>NB - route(resolve_registrar) sets the variable $avp(main_registrar) to the IP address of the Asterisk server</div></div>
</blockquote></div>
</blockquote></div>
<br>_______________________________________________<br>Users mailing list<br><a href="mailto:Users@lists.opensips.org" rel="noreferrer" target="_blank">Users@lists.opensips.org</a><br><a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br></div></div></div>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org" rel="noreferrer" target="_blank">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" rel="noreferrer noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</blockquote></div>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</blockquote></div>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</blockquote></div>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</blockquote></div>