[OpenSIPS-Users] - topology_hiding and no ACK
Bogdan-Andrei Iancu
bogdan at opensips.org
Tue Nov 1 14:55:46 UTC 2022
Hi Nitesh,
Be sure all the remove_hf() are on the right execution path and BEFORE
the t_relay() for the sequential requests.
Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
https://www.opensips-solutions.com
OpenSIPS Bootcamp 5-16 Dec 2022, online
https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/
On 11/1/22 2:15 PM, Nitesh Divecha wrote:
> Bogdan,
>
> Thanks for your feedback.
>
> After reading the docs and following this tutorial
> (https://opensips.org/Documentation/Tutorials-Topology-Hiding
> <https://opensips.org/Documentation/Tutorials-Topology-Hiding>) I
> finally got it working. Thank you!
>
> INVITE is clean, topology is hidden and ACK is sent back and forth.
> Calls are holding good.
>
> While confirming each ACK and BYE, I noticed Originator's User-Agent
> is passed on again only on to ACK and BYE.
>
> I tried to define under:
>
> route{
>
> if (has_totag()) {
>
> if ( is_method("ACK") ) {
>
> if(remove_hf("User-Agent")){
> xlog("*** has-totag -> ACK
> User-Agent found and removed on $rm from $si (callid=$ci). ***\n");
> }
>
> }
>
> if (is_method("BYE")) {
>
> xlog("*** if is_method(BYE) on $rm from $si (callid=$ci)
> ***\n");
>
> if(remove_hf("User-Agent")){
>
> xlog("*** is_method BYE User-Agent found and removed
> on $rm from $si (callid=$ci). ***\n");
>
> }
>
> # do accounting even if the transaction fails
>
> do_accounting("db","failed");
>
> }
>
> }
>
> }
>
> But still Originator's User-Agent is passed on to ACK and BYE...
> Ignore the xlog(""), it is just my way of learning what each line is
> doing and if getting executed :-).
>
> Any suggestions?
>
> Cheers,
> Nitesh
>
>
>
>
>
>
>
>
>
> On Thu, Oct 27, 2022 at 11:34 AM Bogdan-Andrei Iancu
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
> Hi Nitesh,
>
> Where you have the loose_route() in your script right now, use
> topology_hiding_match()
> https://opensips.org/html/docs/modules/3.2.x/topology_hiding.html#func_topology_hiding_match
> <https://opensips.org/html/docs/modules/3.2.x/topology_hiding.html#func_topology_hiding_match>
>
> Regards,
>
> Bogdan-Andrei Iancu
>
> OpenSIPS Founder and Developer
> https://www.opensips-solutions.com <https://www.opensips-solutions.com>
> OpenSIPS Bootcamp 5-16 Dec 2022, online
> https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/ <https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/>
>
> On 10/27/22 3:51 PM, Nitesh Divecha wrote:
>> Hey Bogdan-Andrei,
>>
>> Thanks for your feedback.
>>
>> To be honest - I don't know!
>>
>> I followed some online tutorials and tried to implement
>> "topology_hiding()" after is_method("INVITE") since the first
>> message sent to Outbound Provider is INVITE.
>>
>> I never tried topology_hiding_match().
>>
>> What is the right way to implement topology_hiding module? My
>> scenario is simple, I'm using the default cfg and making ATA
>> register to OpenSIPS to make Outbound PSTN calls.
>>
>> I guess Bootcamp is the answer :-)
>>
>> Cheers,
>> Nitesh
>>
>>
>> On Thu, Oct 27, 2022 at 4:02 AM Bogdan-Andrei Iancu
>> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>>
>> Hi Nitesh,
>>
>> Do you do topology_hiding_match() for the sequential requests
>> (instead of the typical loose_route()) ? As it seems you cfg
>> fails to properly handle the in-dialog / sequential requests.
>>
>> Regards,
>>
>> Bogdan-Andrei Iancu
>>
>> OpenSIPS Founder and Developer
>> https://www.opensips-solutions.com <https://www.opensips-solutions.com>
>> OpenSIPS Bootcamp 5-16 Dec 2022, online
>> https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/ <https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/>
>>
>> On 10/26/22 9:05 PM, Nitesh Divecha wrote:
>>> Hello All,
>>>
>>> I don't know if this is by design or me not implementing
>>> correctly! I'm a newbie to OpenSIPS...
>>>
>>> So I generated a new opensips_residential.cfg file and only
>>> edited it with topology_hiding("UC"); under INVITE. Plus all
>>> the extras to make ATA register successfully and SIP trunk.
>>>
>>> Every time I make a call two INVITE dialogs are created. One
>>> from ATA to OpenSIPS and second one from OpenSIPS to
>>> Outbound Provider. When a PSTN call is answered, the
>>> Outbound Provider sends 200 OK back to OpenSIPS, and
>>> OpenSIPS sends back 200 OK to ATA. Then ATA acknowledges
>>> with ACK back to OpenSIPS BUT OpenSIPS fails to send ACK to
>>> the Outbound Provider. So Outbound Provider sends 200 OK
>>> again to OpenSIPS and OpenSIPS sends 200 OK to ATA then ATA
>>> acknowledges with ACK back to OpenSIPS BUT OpenSIPS fails to
>>> send back ACK... This dance goes on for 30 secs and until
>>> Outbound Provider drops the call due to no ACK.
>>>
>>> On the sngrep it shows that call from ATA to OpenSIPS
>>> "COMPLETED" while OpenSIPS to Outbound Provider "CALL SETUP".
>>>
>>> If I comment out topology_hiding("UC"); then everything
>>> works perfectly and sngrep shows only one INVITE dialog from
>>> ATA to OpenSIPS to Outbound Provider except the Outbound
>>> Provider can see everything that is ATA's IP info, etc...
>>>
>>> Here is my cfg:
>>>
>>> route {
>>> ...
>>> if (dp_translate(10 ,$rU ,$rU) ) {
>>> xlog("*** Dial plan translate from source
>>> $avp(src) to $rU ***\n");
>>>
>>> $avp(furi) = "sip:xxxxxxxxxx at gothamcity.com
>>> <mailto:sip%3Axxxxxxxxxx at gothamcity.com>";
>>> uac_replace_from( , "$avp(furi)");
>>> #strip(1);
>>> if (!do_routing(0)) {
>>> send_reply(500,"No PSTN Route found");
>>> exit;
>>> }
>>> # t_on_branch("change_from");
>>> route(relay);
>>> exit;
>>> }
>>> ...
>>> }
>>>
>>> route[relay] {
>>> # for INVITEs enable some additional helper routes
>>> if (is_method("INVITE")) {
>>> # create_dialog();
>>> topology_hiding("UC");
>>> if(remove_hf("User-Agent")){
>>> xlog("*** 4. User-Agent found and
>>> removed. ***\n");
>>> }
>>>
>>> if (isflagset("NAT") &&
>>> has_body("application/sdp")) {
>>> rtpproxy_offer("ro");
>>> }
>>>
>>> t_on_branch("per_branch_ops");
>>> t_on_reply("handle_nat");
>>> t_on_failure("missed_call");
>>> }
>>>
>>> if (isflagset("NAT")) {
>>> add_rr_param(";nat=yes");
>>> }
>>>
>>> if (!t_relay()) {
>>> send_reply(500,"Internal Error");
>>> }
>>> exit;
>>> }
>>>
>>> My eyes are sore and my head is spinning... Any help will be
>>> highly appreciated... Thanks!
>>>
>>> Cheers,
>>> Nitesh
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users <http://lists.opensips.org/cgi-bin/mailman/listinfo/users>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20221101/b61545bb/attachment-0001.html>
More information about the Users
mailing list