[OpenSIPS-Users] - topology_hiding and no ACK

Nitesh Divecha aviator.nitesh.d at gmail.com
Tue Nov 1 17:11:30 UTC 2022


Bogdan,

Ah haa! Found it and fixed it!

Much appreciated for your help... This was a good learning experience!

Next up is PSTN routing and local call routing.


Cheers,
Nitesh



On Tue, Nov 1, 2022 at 10:55 AM Bogdan-Andrei Iancu <bogdan at opensips.org>
wrote:

> 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) 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>
> 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
>>
>> 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 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>
>> 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
>>> OpenSIPS Bootcamp 5-16 Dec 2022, online
>>>   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";
>>>                 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 listUsers at lists.opensips.orghttp://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20221101/83a4883d/attachment-0001.html>


More information about the Users mailing list