<div dir="ltr">Bogdan, <div><br></div><div>Ah haa! Found it and fixed it!</div><div><br></div><div>Much appreciated for your help... This was a good learning experience! </div><div><br></div><div>Next up is PSTN routing and local call routing. </div><div><br></div><div><br></div><div>Cheers, </div><div>Nitesh</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Nov 1, 2022 at 10:55 AM Bogdan-Andrei Iancu <<a href="mailto:bogdan@opensips.org">bogdan@opensips.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div>
Hi Nitesh,<br>
<br>
Be sure all the remove_hf() are on the right execution path and
BEFORE the t_relay() for the sequential requests.<br>
<br>
Regards,<br>
<pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="https://www.opensips-solutions.com" target="_blank">https://www.opensips-solutions.com</a>
OpenSIPS Bootcamp 5-16 Dec 2022, online
<a href="https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/" target="_blank">https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/</a></pre>
<div>On 11/1/22 2:15 PM, Nitesh Divecha
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Bogdan,
<div><br>
</div>
<div>Thanks for your feedback. </div>
<div><br>
</div>
<div>After reading the docs and following this tutorial (<a href="https://opensips.org/Documentation/Tutorials-Topology-Hiding" target="_blank">https://opensips.org/Documentation/Tutorials-Topology-Hiding</a>)
I finally got it working. Thank you!</div>
<div><br>
</div>
<div>INVITE is clean, topology is hidden and ACK is sent back
and forth. Calls are holding good. </div>
<div><br>
</div>
<div>While confirming each ACK and BYE, I noticed Originator's
User-Agent is passed on again only on to ACK and BYE. </div>
<div><br>
</div>
<div>I tried to define under: </div>
<div><br>
</div>
<div>route{</div>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">if
(has_totag()) {<br>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">if
( is_method("ACK") ) {</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
if(remove_hf("User-Agent")){<br>
xlog("*** has-totag
-> ACK User-Agent found and removed on $rm from $si
(callid=$ci). ***\n");<br>
}<br>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">}</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">if
(is_method("BYE")) {</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">xlog("*** if is_method(BYE)
on $rm from $si (callid=$ci) ***\n");</blockquote>
</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">if(remove_hf("User-Agent")){</blockquote>
</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">xlog("*** is_method BYE
User-Agent found and removed on $rm from $si
(callid=$ci). ***\n");<br>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">}</blockquote>
</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">#
do accounting even if the transaction fails</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">do_accounting("db","failed");</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">}</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">}</blockquote>
<div>}</div>
<div><br>
</div>
<div>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 :-).</div>
<div><br>
</div>
<div>Any suggestions? </div>
<div><br>
</div>
<div>Cheers,</div>
<div>Nitesh</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Oct 27, 2022 at 11:34
AM Bogdan-Andrei Iancu <<a href="mailto:bogdan@opensips.org" target="_blank">bogdan@opensips.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div> <font face="monospace">Hi Nitesh,<br>
<br>
Where you have the loose_route() in your script right now,
use topology_hiding_match()<br>
<a href="https://opensips.org/html/docs/modules/3.2.x/topology_hiding.html#func_topology_hiding_match" target="_blank">https://opensips.org/html/docs/modules/3.2.x/topology_hiding.html#func_topology_hiding_match</a><br>
<br>
Regards,<br>
</font>
<pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="https://www.opensips-solutions.com" target="_blank">https://www.opensips-solutions.com</a>
OpenSIPS Bootcamp 5-16 Dec 2022, online
<a href="https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/" target="_blank">https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/</a></pre>
<div>On 10/27/22 3:51 PM, Nitesh Divecha wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hey Bogdan-Andrei,
<div><br>
</div>
<div>Thanks for your feedback. </div>
<div><br>
</div>
<div>To be honest - I don't know! </div>
<div><br>
</div>
<div>I followed some online tutorials and tried to
implement "topology_hiding()" after <span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">is_method("INVITE")
since the first message sent to Outbound Provider is
INVITE. </span></div>
<div><br>
</div>
<div>I never tried topology_hiding_match().</div>
<div><br>
</div>
<div>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. </div>
<div><br>
</div>
<div>I guess Bootcamp is the answer :-)</div>
<div><br>
</div>
<div>
<div>Cheers,</div>
<div>Nitesh</div>
<div><br>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Oct 27, 2022
at 4:02 AM Bogdan-Andrei Iancu <<a href="mailto:bogdan@opensips.org" target="_blank">bogdan@opensips.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div> <font face="monospace">Hi Nitesh,<br>
<br>
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.<br>
<br>
Regards,<br>
</font>
<pre cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a href="https://www.opensips-solutions.com" target="_blank">https://www.opensips-solutions.com</a>
OpenSIPS Bootcamp 5-16 Dec 2022, online
<a href="https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/" target="_blank">https://www.opensips.org/training/OpenSIPS_eBootcamp_2022/</a></pre>
<div>On 10/26/22 9:05 PM, Nitesh Divecha wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hello All,
<div><br>
</div>
<div>I don't know if this is by design or me not
implementing correctly! I'm a newbie to
OpenSIPS... </div>
<div><br>
</div>
<div>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. </div>
<div><br>
</div>
<div>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. </div>
<div><br>
</div>
<div>On the sngrep it shows that call from ATA
to OpenSIPS "COMPLETED" while OpenSIPS to
Outbound Provider "CALL SETUP".</div>
<div><br>
</div>
<div>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...</div>
<div><br>
</div>
<div>Here is my cfg:</div>
<div><br>
</div>
<div>route {</div>
<div>...</div>
<div><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">if
(dp_translate(10 ,$rU ,$rU) ) {</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
xlog("*** Dial plan translate
from source $avp(src) to $rU ***\n");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
$avp(furi) = "<a href="mailto:sip%3Axxxxxxxxxx@gothamcity.com" target="_blank">sip:xxxxxxxxxx@gothamcity.com</a>";</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
uac_replace_from( ,
"$avp(furi)");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
#strip(1);</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
if (!do_routing(0)) {</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
send_reply(500,"No
PSTN Route found");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
exit;</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
}</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
# t_on_branch("change_from");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
route(relay);</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
exit;</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
}</span><br>
</div>
<div><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">...</span></div>
<div>}</div>
<div><br>
</div>
<div><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">route[relay]
{</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
# for INVITEs enable some additional
helper routes</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
if (is_method("INVITE")) {</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
# create_dialog();</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
topology_hiding("UC");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
if(remove_hf("User-Agent")){</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
xlog("*** 4.
User-Agent found and removed. ***\n");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
}</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
if (isflagset("NAT")
&& has_body("application/sdp")) {</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
rtpproxy_offer("ro");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
}</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
t_on_branch("per_branch_ops");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
t_on_reply("handle_nat");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
t_on_failure("missed_call");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
}</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
if (isflagset("NAT")) {</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
add_rr_param(";nat=yes");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
}</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
if (!t_relay()) {</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
send_reply(500,"Internal
Error");</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
}</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
exit;</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">
<span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">}</span><br>
</div>
<div><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br>
</span></div>
<div><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">My
eyes are sore and my head is spinning... </span><span style="font-size:12px;color:rgb(0,0,0);font-family:Helvetica">Any help
will be highly appreciated... Thanks! </span></div>
<div><font face="Helvetica" color="#000000"><span style="font-size:12px"><br>
</span></font></div>
<div><font face="Helvetica" color="#000000"><span style="font-size:12px">Cheers,</span></font></div>
<div><font face="Helvetica" color="#000000"><span style="font-size:12px">Nitesh</span></font></div>
<div><font face="Helvetica" color="#000000"><span style="font-size:12px"><br>
</span></font></div>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
Users mailing list
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote></div>