<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hi Bogdan<br><br>Thank you for the tip :)<br><br><br>--- On <b>Tue, 12/29/09, Bogdan-Andrei Iancu <i>&lt;bogdan@voice-system.ro&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Bogdan-Andrei Iancu &lt;bogdan@voice-system.ro&gt;<br>Subject: Re: [OpenSIPS-Users] Need help Nathelper + rtpproxy<br>To: "OpenSIPS users mailling list" &lt;users@lists.opensips.org&gt;<br>Date: Tuesday, December 29, 2009, 7:42 AM<br><br><div class="plainMail">Hi Ha,<br><br>You need to call unforce_rtp_proxy() when BYE is received.<br><br>Regards,<br>Bogdan<br><br><br>&gt; # -------------------------&nbsp; request routing logic -------------------<br>&gt;<br>&gt; # main routing logic<br>&gt; route{<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# initial sanity checks -- messages with<br>&gt;&nbsp; &nbsp;
 &nbsp; &nbsp;&nbsp;&nbsp;# max_forwards==0, or excessively long requests<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (!mf_process_maxfwd_header("10")) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;sl_send_reply("483","Too Many Hops");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;exit;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;};<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (msg:len &gt;=&nbsp; 2048 ) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;sl_send_reply("513", "Message too big");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;exit;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;};<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# we record-route all messages -- to make sure that<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# subsequent messages will go through our proxy; that's<br>&gt;&nbsp; &nbsp; &nbsp;
 &nbsp;&nbsp;&nbsp;# particularly good if upstream and downstream entities<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# use different transport protocol<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (!method=="REGISTER")<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;record_route();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# subsequent messages withing a dialog should take the<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# path determined by record-routing<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (loose_route()) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# mark routing logic in request<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;append_hf("P-hint: rr-enforced\r\n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;route(1);<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;};<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (!uri==myself) {<br>&gt;&nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# mark routing logic in request<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;append_hf("P-hint: outbound\r\n");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;route(1);<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;};<br>&gt;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# if the request is for other domain use UsrLoc<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# (in case, it does not work, use the following command<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# with proper names and addresses in it)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (uri==myself) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (method=="REGISTER") {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;save("location");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;exit;<br>&gt;&nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;};<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;}<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# native SIP destinations are handled using our USRLOC DB<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if(method=="INVITE"){<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (dst_ip == 192.168.1.248)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;force_rtp_proxy("oei");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (dst_ip == 172.26.0.2)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;force_rtp_proxy("oie");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;t_on_reply("1");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;};<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; if (is_method("BYE"))<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;unforce_rtp_proxy();<br>&gt;&nbsp; &nbsp;
 &nbsp;&nbsp;&nbsp;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (!lookup("location","m")) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;switch ($retcode) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;case -1:<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;case -3:<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;t_newtran();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;t_on_failure("1");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;t_reply("404", "Not Found");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;exit;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;case -2:<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;sl_send_reply("405", "Method Not
 Allowed");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;exit;<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;}<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;}<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;route(1);<br>&gt; }<br>&gt; route[1] {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# send it out now; use stateful forwarding as it works<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;# reliably even for UDP2TCP<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;failure_route[1];<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if (!t_relay()) {<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;sl_reply_error();<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;};<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;exit;<br>&gt; }<br>&gt; onreply_route[1]{<br>&gt;&nbsp; &nbsp;&nbsp;&nbsp;if (status=="200"){<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if(dst_ip
 == 172.26.0.2)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;force_rtp_proxy("oie");<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;if(dst_ip == 192.168.1.248)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;force_rtp_proxy("oei");<br>&gt;&nbsp; &nbsp;&nbsp;&nbsp;}<br>&gt; }<br>&gt;<br>&gt; failure_route[1]{<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;unforce_rtp_proxy();<br>&gt; }<br>&gt;<br>&gt;<br>&gt;<br>&gt; when i make call and check on rtpproxy debug and see the rtpproxy debug :<br>&gt;<br>&gt; DBUG:handle_command: received command "18781_4 <br>&gt; UIEc0,18,4,97,9,2,15,8,101 09d614a45c92f2b0@172.26.0.100 172.26.0.100 <br>&gt; 2908 824bcd8bb5ba14fa;1"<br>&gt; INFO:handle_command: new session 09d614a45c92f2b0@172.26.0.100, tag <br>&gt; 824bcd8bb5ba14fa;1 requested, type strong<br>&gt; INFO:handle_command: new session on a port 48190 created, tag <br>&gt; 824bcd8bb5ba14fa;1<br>&gt;
 INFO:handle_command: pre-filling caller's address with 172.26.0.100:2908<br>&gt; DBUG:doreply: sending reply "18781_4 48190 192.168.1.248<br>&gt; "<br>&gt; DBUG:handle_command: received command "18780_4 LEIc0,101 <br>&gt; 09d614a45c92f2b0@172.26.0.100 192.168.1.6 17206 824bcd8bb5ba14fa;1 <br>&gt; 49ee0e488eccead5;1"<br>&gt; INFO:handle_command: lookup on ports 48190/42508, session timer restarted<br>&gt; INFO:handle_command: pre-filling callee's address with 192.168.1.6:17206<br>&gt; DBUG:doreply: sending reply "18780_4 42508 172.26.0.2<br>&gt; "<br>&gt; INFO:process_rtp: session timeout<br>&gt; INFO:remove_session: RTP stats: 238 in from callee, 323 in from <br>&gt; caller, 561 relayed, 0 dropped<br>&gt; INFO:remove_session: RTCP stats: 1 in from callee, 0 in from caller, 1 <br>&gt; relayed, 0 dropped<br>&gt; INFO:remove_session: session on ports 48190/42508 is cleaned up<br>&gt;<br>&gt;<br>&gt;<br>&gt;
 ------------------------------------------------------------------------<br>&gt;<br>&gt; _______________________________________________<br>&gt; Users mailing list<br>&gt; <a ymailto="mailto:Users@lists.opensips.org" href="/mc/compose?to=Users@lists.opensips.org">Users@lists.opensips.org</a><br>&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>&gt;&nbsp;&nbsp;&nbsp;<br><br><br>-- <br>Bogdan-Andrei Iancu<br>www.voice-system.ro<br><br><br>_______________________________________________<br>Users mailing list<br><a ymailto="mailto:Users@lists.opensips.org" href="/mc/compose?to=Users@lists.opensips.org">Users@lists.opensips.org</a><br><a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br></div></blockquote></td></tr></table><br>