<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Folks,&nbsp;<br><br>I forgot to attach my configs, here it is.<br><br>Thanks<br>Sawyer<br><br><br>route{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!mf_process_maxfwd_header("10")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_send_reply("483","Too Many Hops");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>#---- NAT Detection ----#<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>force_rport();<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>if (nat_uac_test("18")) {<br><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space: pre; ">        </span>if (method=="REGISTER")<br><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space: pre; ">        </span>#is_()<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>{<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>fix_nated_register();<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>}<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>else {<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>fix_nated_contact();<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>}<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>setflag(5);<br><span class="Apple-tab-span" style="white-space: pre; ">        </span>}<br><br>if (has_totag()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (loose_route()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("BYE")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setflag(1); # do accounting ...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setflag(3); # ... even if the transaction fails<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (is_method("INVITE")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;record_route();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(1);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( is_method("ACK") ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( t_check_trans() ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# non loose-route, but stateful ACK; must be an ACK after<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# a 487 or e.g. 404 from upstream server<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_relay();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# ACK without matching transaction -&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# ignore and discard<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_send_reply("404","Not here");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#initial requests<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# CANCEL processing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("CANCEL"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (t_check_trans())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_relay();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_check_trans();<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# preloaded route checking<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (loose_route()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlog("L_ERR",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is_method("ACK"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_send_reply("403","Preload Route denied");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# record routing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is_method("REGISTER|MESSAGE"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;record_route();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# account only INVITEs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("INVITE")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setflag(1); # do accounting<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!uri==myself)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;append_hf("P-hint: outbound\r\n");<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("PUBLISH"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_send_reply("503", "Service Unavailable");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("REGISTER"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#-- Request is behind NAT(flag5) save with bflag 6 -#<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#---- Use bflag 7 to start SIP pinging (Options) ---#<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isflagset(5)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setbflag(6);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setbflag(7);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!save("location"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_reply_error();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($rU==NULL) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# request with no Username in RURI<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_send_reply("484","Address Incomplete");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# apply DB based aliases (uncomment to enable)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;##alias_db_lookup("dbaliases");<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# do lookup with method filtering<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!lookup("location","m")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch ($retcode) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case -1:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case -3:<br>&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;t_newtran();<br>&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;t_reply("404", "Not Found");<br>&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;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case -2:<br>&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;sl_send_reply("405", "Method Not Allowed");<br>&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;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# when routing via usrloc, log the missed calls also<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setflag(2);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(1);<br>}<br><br><br>route[1] {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# for INVITEs enable some additional helper routes<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#---- Helper route, if nat=yes in the R-URI set flag 6 ----#<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#---- This is used to Process REINVITES ----#<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (subst_uri('/(<a href="sip:.*">sip:.*</a>);nat=yes/\1/')){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setbflag(6);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#-- If caller(flag 5) or callee(flag 6) are behind NAT --#<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#-- Call the route(6) to force the use of the RTP Proxy --#<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isflagset(5)||isbflagset(6)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;route(6);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isflagset(5)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search_append('Contact:.*sip:[^&gt;[:cntrl:]]*', ';nat=yes');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("INVITE")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_branch("2");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_reply("2");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_failure("1");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!t_relay()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sl_reply_error();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>}<br><br><br><br>route[6] {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#---- RTP Proxy handling ---#<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_method("BYE|CANCEL")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unforce_rtp_proxy();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (is_method("INVITE")){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#---- Activates the RTP Proxy for the CALLEE ---#<br>#checnged &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;force_rtp_proxy();<br>rtpproxy_answer();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_on_failure("1");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>branch_route[2] {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlog("new branch at $ru\n");<br>}<br><br><br>onreply_route[2] {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlog("incoming reply\n");<br>if ((isflagset(5) || isbflagset(6)) &amp;&amp; status=~"(183)|(2[0-9][0-9])"){<br><br><br>rtpproxy_offer();<br>append_hf("P-hint: onreply_route|force_rtp_proxy \r\n");<br>}<br><br>if (isbflagset(6)) {<br><br>search_append('Contact:.*sip:[^&gt;[:cntrl:]]*', ';nat=yes');<br>append_hf("P-hint: Onreply-route - fixcontact \r\n");<br>fix_nated_contact();<br>}<br>exit;<br>}<br><br><br>failure_route[1] {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isflagset(5) || isbflagset(6)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unforce_rtp_proxy();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (t_was_cancelled()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>}<br><div><div>On 17 Apr, 2012, at 2:24 PM, sawyerzhang wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi Folks,<br><br>I have installed opensips 1.7 without TLS support. Everything was fine expect there was an issue with nated clients. The RTPproxy did a trick and things were ok for a while. Now, sometime I am experiencing very strange behaviour. I just can't send or receive messages across the clients. And its so random that its hard to know what exactly went wrong. I have a strong feeling that it got to be something with routing logic.<br><br>Any thoughts?<br><br>Here is how I do it (X.Y.Z public IP), starting the rtprpxy:<br><br>rtpproxy -l X.Y.Z -s udp:X.Y.Z:8888 -F<br><br>And then I restart opensips:<br><br>opensipsctl start<br><br>I can see opensip can talk to rtpproxy in /var/log/syslog :<br><br>INFO:rtpproxy:rtpp_test: rtp proxy &lt;udp:X.Y.Z:8888&gt; found, support for it enabled<br>DBG:rtpproxy:raise_rtpproxy_event: no event sent<br>DBG:core:init_m<br><br>And here is snip from log while a UA is trying to send a message;<br><br>DBG:uri:has_totag: no totag<br>DBG:core:parse_headers: flags=78<br>DBG:tm:t_lookup_request: start searching: hash=42124, isACK=0<br>DBG:tm:matching_3261: RFC3261 transaction matching failed<br>DBG:tm:t_lookup_request: no transaction found<br>DBG:core:parse_headers: flags=200<br>DBG:rr:find_first_route: No Route headers found<br>DBG:rr:loose_route: There is no Route HF<br><br>It seem routing part is broken but I wonder how come it can work sometime?<br><br>thanks,<br>sawyer</div></blockquote></div><br>
<br></body></html>