<br><br>
<div><span class="gmail_quote">2008/1/17, Andreti <<a href="mailto:mbedial@gmail.com">mbedial@gmail.com</a>>:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>Hi everybody,<br>I'm working with Openser + Mediaproxy 1.9.0 and it seems that everything is<br>working when the calls are establised between users attached to the same<br>
proxy server, even with different kind of NATs.<br><br>However It doen't work in 2 different scenarios, and the result is exactly<br>the same , the video and audio is only sent in one way.<br><br>Scenario 1<br>========<br>
User A attached to the SIP proxy xxx.xxx.xxx.13 (Public IP) calls to a GW<br>xxx.xxx.xxx.11 (Public IP) with several users internally associated. In<br>this case the user A can see the video and audio sent by the GW, but the GW<br>
doesn't receive any RTSP stream. It seems that the mediaproxy doesn't do<br>anything, why? maybe because the GW blongs to other domain (xxx.xxx.xxx.11)<br>? What can I do?<br>If the GW calls to user A, it works fine (I can see the session in the<br>
mediaproxy with sessions.py)<br><br><br>Scenario 2<br>========<br>In this case, I have another GW with Public IP address xxx.xxx.xxx.14, but<br>it doesn't include in the INVITE message the SDP body. The GW calls to the<br>
same user attached to the SIP proxy xxx.xxx.xxx.13 , and the behaviour is<br>exactly the same as scenario 1, the calling site can sse the video and audio<br>but the called can't.<br>Unlike the previous scenario, the signalling is:<br>
<br>INVITE without SDP --> 200 OK (SDP) -- > ACK (SDP)<br><br>In theory, Mediaproxy 1.9.0 should support this procedure since it's a SIP<br>standard mechanism, however the called party doesn't receive RTP stream. In<br>
my opinion, the problem could be related to scenario 1, I mean , the calling<br>party is not attached to the SIP proxy (belongs to other domain) and when<br>the 200 OK (SDP) message arrives to the SIP proxy, the mediaproxy doesn't do<br>
anything<br><br>Sorry for the complex explanation. I've waste a lot of time trying to solve<br>this solution and honestly I don't know what to do. Please, could somebody<br>help??<br><br>I attach my openser.conf. I hope it helps.<br>
<br>Andreti<br><br><br># ------------------------- request routing logic -------------------<br># main routing logic<br><br>route{<br><br> # initial sanity checks -- messages with<br> # max_forwards==0, or excessively long requests<br>
if (!mf_process_maxfwd_header("10")) {<br> sl_send_reply("483","Too Many Hops");<br> exit;<br> };<br> if (msg:len >= 2048 ) {<br> sl_send_reply("513", "Message too big");<br>
exit;<br> };<br><br><br># setflag(ACCOUNTING_FLAG);<br># avp_write("SER_IP","$avp(s:sip-proxy)");<br># avp_write("$ru", "$avp(can_uri)");<br><br> if (!method=="REGISTER") record_route();<br>
<br> if (loose_route()) {<br> # mark routing logic in request<br> append_hf("P-hint: rr-enforced\r\n");<br> if(is_method("BYE"))<br> { # log it all the time<br>
acc_rad_request("200 ok");<br> acc_log_request("200 ok");<br> setflag(1);<br> }<br><br> route(1);<br> };<br> if (src_ip==<a href="http://193.36.177.227">193.36.177.227</a>) {<br>
fix_nated_sdp("2");<br> };<br> if(is_method("INVITE") && !has_totag())<br> { # set the acc flags<br> setflag(1);<br> setflag(2);<br>
};<br> if (method=="MESSAGE") {<br> setflag(1);<br> };<br><br> if (!uri==myself) {<br> # mark routing logic in request<br> append_hf("P-hint: outbound\r\n");<br>
route(1);<br> };<br><br> if (uri==myself) {<br><br> if (method=="REGISTER") {<br> # Uncomment this if you want to use digest<br><br>if (!radius_www_authorize(""))<br>
{<br> www_challenge("","1");<br> exit;<br>}<br> if (client_nat_test("3")) {<br> setflag(2);<br> force_rport();<br> fix_contact();<br>
};<br><br> save("location");<br> exit;<br><br> };<br><br> lookup("aliases");<br> if (!uri==myself) {<br>
append_hf("P-hint: outbound alias\r\n");<br> route(1);<br> };<br><br> # native SIP destinations are handled using our USRLOC DB<br> if (!lookup("location")) {<br>
# log to acc as missed call<br> acc_rad_request("404 Not Found");<br> acc_log_request("404 Not Found");<br><br> sl_send_reply("404", "Not Found");<br>
exit;<br> };<br> };<br><br> if (method=="INVITE") {<br> t_on_failure("1");<br> } else if (method == "BYE" || method == "CANCEL") {<br>
end_media_session();<br> };<br><br> if (loose_route()) {<br> if (method=="INVITE" || method=="ACK") {<br> use_media_proxy();<br> };<br>#if ((method=="INVITE" || method=="ACK") &&<br>
!to_uri=="<a href="mailto:sip:frog1@xxx.xxx.10.12">sip:frog1@xxx.xxx.10.12</a>") {<br># use_media_proxy();<br>#};<br> t_relay();<br> return;<br> };<br><br> if (client_nat_test("3") && !search("^Record-Route:")) {<br>
# Mark as NAT'ed<br> force_rport();<br> fix_contact();<br> };<br><br> if (method=="INVITE") {<br> t_on_reply("1");<br> };<br><br> if (method=="INVITE" || method=="ACK") {<br>
use_media_proxy();<br> };<br><br> if (!t_relay()) {<br> if (method=="INVITE" || method=="ACK") {<br> end_media_session();<br> };<br> sl_reply_error();<br> };<br>
<br> append_hf("P-hint: usrloc applied\r\n");<br> # route(1);<br><br>}<br><br>route[1]<br>{<br> # send it out now; use stateful forwarding as it works reliably<br> # even for UDP2TCP<br> if (!t_relay()) {<br>
sl_reply_error();<br> };<br> exit;<br>}<br><br>failure_route[1] {<br> end_media_session();<br>}<br><br>onreply_route[1] {<br> if (status=~"(183)|(2[0-9][0-9])") {<br> if (client_nat_test("1")) {<br>
fix_contact();<br> };<br> use_media_proxy();<br> };<br>}<br><br><br><br></blockquote></div><br>