[OpenSIPS-Users] - topology_hiding and no ACK
Nitesh Divecha
aviator.nitesh.d at gmail.com
Tue Nov 1 12:15:05 UTC 2022
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/fd3b55a5/attachment-0001.html>
More information about the Users
mailing list