<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi all,</div><div><br></div><div>I think I have this all quite good now. I do have the issue though that when the remote party hangs up a call we aren't sent the BYE. I'm guessing this is something to do with either the Record-Route or a Via header.</div><div><br></div><div>I don't think it's the Via because the responses from our ITSP come back with something like this for the opensips line:</div><div><font class="Apple-style-span" face="'Courier New'">Via: SIP/2.0/UDP 192.168.52.1;branch=z9hG4bKcd53.5599c4a7.0;received=203.31.111.19;rport=5060</font></div><div>indicating that they are dealing with it. And I've tried changing the Via header for opensips with this code but I think it is created late in the process as it is never triggered:</div><div><div><font class="Apple-style-span" face="'Courier New'">&nbsp; &nbsp; &nbsp; &nbsp; if ( search("Via: SIP/2\.0/UDP 192\.168\.52\.1;") ) { &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font class="Apple-style-span" face="'Courier New'">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("Correcting router's Via header...\n"); &nbsp; &nbsp; &nbsp;</font></div><div><font class="Apple-style-span" face="'Courier New'">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; replace_all("Via: SIP/2\.0/UDP 192\.168\.52\.1;", "Via: SIP/2.0/UDP 203.31.111.19;")</font></div><div><font class="Apple-style-span" face="'Courier New'">&nbsp; &nbsp; &nbsp; &nbsp; }</font></div></div><div><br></div><div>If I try to use record_route() it breaks everything as then opensips seems to loose track of the session and doesn't even respond to the ACKs when the session is created and then our ITSP hangs up 30 seconds later.</div><div><br></div><div>So again, any pointers greatly appreciated. And here is our config file as it currently stands:</div><div><br></div><div><div><font class="Apple-style-span" face="'Courier New'">debug=3</font></div><div><font class="Apple-style-span" face="'Courier New'">log_stderror=no</font></div><div><font class="Apple-style-span" face="'Courier New'">log_facility=LOG_LOCAL0</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">fork=yes</font></div><div><font class="Apple-style-span" face="'Courier New'">children=4</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">/* uncomment the following lines to enable debugging */</font></div><div><font class="Apple-style-span" face="'Courier New'">#debug=6</font></div><div><font class="Apple-style-span" face="'Courier New'">fork=no</font></div><div><font class="Apple-style-span" face="'Courier New'">log_stderror=yes</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">disable_tcp=yes</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">#disable_dns_blacklist=no</font></div><div><font class="Apple-style-span" face="'Courier New'">#dns_try_ipv6=yes</font></div><div><font class="Apple-style-span" face="'Courier New'">auto_aliases=no &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">port=5060</font></div><div><font class="Apple-style-span" face="'Courier New'">listen=udp:192.168.52.1:5060</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">####### Modules Section ########</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">#set module path</font></div><div><font class="Apple-style-span" face="'Courier New'">mpath="/usr/lib/opensips/modules/"</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">loadmodule "rr.so"</font></div><div><font class="Apple-style-span" face="'Courier New'">loadmodule "tm.so"</font></div><div><font class="Apple-style-span" face="'Courier New'">loadmodule "uac.so"</font></div><div><font class="Apple-style-span" face="'Courier New'">loadmodule "xlog.so"</font></div><div><font class="Apple-style-span" face="'Courier New'">loadmodule "textops.so"</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"># ----------------- setting module-specific parameters --------------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"># ----- uac params ----- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font class="Apple-style-span" face="'Courier New'">modparam("uac", "credential", "&lt;userid&gt;:sip.pennytel.com:&lt;password&gt;")</font></div><div><font class="Apple-style-span" face="'Courier New'">modparam("uac","from_restore_mode","none")</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">####### Routing Logic ########</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"># main request routing logic</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">route{</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>t_on_failure("1");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>if ( is_method("INVITE") ) {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>xlog("$fU ($fn) Calling $oU\n");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>#record_route();</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><span class="Apple-style-span" style="font-family: 'Courier New'; ">&nbsp; &nbsp; &nbsp; &nbsp; if ( search("Via: SIP/2\.0/UDP 192\.168\.52\.1;") ) { &nbsp; &nbsp; &nbsp;&nbsp;</span><font class="Apple-style-span" face="'Courier New'"><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xlog("Correcting router's Via header...\n"); &nbsp; &nbsp; &nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; replace_all("Via: SIP/2\.0/UDP 192\.168\.52\.1;", "Via: SIP/2.0/UDP 203.31.111.19;")</div><div>&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div><br></div></font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>if ( has_body("application/sdp") ) {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>if ( search_body("a=rtpmap:. PCM.\/.*\n") ) {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                        </span>xlog("Removing g711 codecs...\n");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                        </span>replace_body_all("a=rtpmap:. PCM.\/.*\n", "");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>if ( search_body("192\.168\.52\..*") ) {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                        </span>xlog("Correcting RTP IP address...\n");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                        </span>replace_body_all("192\.168\.52\..*", "203.31.111.19");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'Courier New'">        </font></span></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>if ( uri=~"<a href="sip:.+@192.168.52.1">sip:.+@192.168.52.1</a>" ) {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>rewritehost("<a href="http://sip.pennytel.com">sip.pennytel.com</a>");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>#remove_credentials();</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>remove_hf("Proxy-Authorization");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>remove_hf("User-Agent");</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>uac_replace_from("Yuruga Nursery","<a href="sip:0740933826@203.31.111.19">sip:0740933826@203.31.111.19</a>");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>t_relay("udp:sip.pennytel.com:5060");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>};</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>route(1);</font></div><div><font class="Apple-style-span" face="'Courier New'">}</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">route[1] {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</font></div><div><font class="Apple-style-span" face="'Courier New'">}</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">failure_route[1] {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>if (t_check_status("40[17]")) {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>xlog("Authentication requested\n");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>if (uac_auth()) {</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                        </span>xlog("Authentication successfull\n");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                        </span>t_relay("udp:sip.pennytel.com:5060");</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font class="Apple-style-span" face="'Courier New'"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div><div><font class="Apple-style-span" face="'Courier New'">}</font></div></div><div><br></div><br><div apple-content-edited="true">
<div><div>Regards,<div>Andrew Radke</div></div></div></div></body></html>