Hello
I want to test a scenario with SER, MEDIAPROXY and Vovida B2BUA, but I'm having some problems. If someone has tested this before, I would like to ask you the config files to help me.
When NATedUA1 calls NATedUA2, invite reaches NATedUA2. NATedUA2 sends responses back to SER (100 trying 180 ringing) but SER doesn’t forward it further to NATedUA1.I'm having problems when NatedUA2 send '100 Trying' and '180 ringing' to SER, it forwards it to B2BUA, but then there is no flow of messages.
NATedUA2 ^ | 4.INVITE | 1.INVITE 2.INVITE NATedUA1 ----> SER+MEDIAPROXY ------> B2BUA <----- 3. INVITE
ser.cfg is:
# Example ser.cfg for mediaproxy functionality
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) listen=72.21.40.107 port=5060 children=4 fifo="/tmp/ser_fifo" # fifo_db_url="mysql://ser:heslo@localhost/ser"
loadmodule "/usr/local/lib/ser/modules/mysql.so" loadmodule "/usr/local/lib/ser/modules/textops.so" loadmodule "/usr/local/lib/ser/modules/sl.so" loadmodule "/usr/local/lib/ser/modules/tm.so" loadmodule "/usr/local/lib/ser/modules/rr.so" loadmodule "/usr/local/lib/ser/modules/maxfwd.so" loadmodule "/usr/local/lib/ser/modules/usrloc.so" loadmodule "/usr/local/lib/ser/modules/registrar.so" loadmodule "/usr/local/lib/ser/modules/domain.so" loadmodule "/usr/local/lib/ser/modules/uri.so" loadmodule "/usr/local/lib/ser/modules/mediaproxy.so" loadmodule "/usr/local/lib/ser/modules/auth.so" loadmodule "/usr/local/lib/ser/modules/auth_radius.so"
modparam("usrloc", "db_mode", 0)
#modparam("usrloc", "db_url","mysql://ser:heslo@localhost/ser") modparam("mediaproxy", "natping_interval", 60) modparam("registrar", "nat_flag", 2)
route{ if (!mf_process_maxfwd_header("10")) { if (method!="ACK") { sl_send_reply("483", "Too many hops"); }; break; };
if (msg:len >= max_len) { if (method!="ACK") { sl_send_reply("513", "Message too big"); }; break; };
if (method=="REGISTER") { if (is_from_local()) { # Mark as NAT'ed if (client_nat_test("3")) { setflag(2); force_rport(); fix_contact(); };
if (!radius_www_authorize("72.21.40.107")) { www_challenge("72.21.40.107", "0"); break; } else if (!check_to()) { sl_send_reply("403", "Username!=To not allowed"); break; };
if (!save("location")) { sl_reply_error(); }; } else { sl_send_reply("403", "This domain is not served here"); };
break; };
if (method=="INVITE") { if (!(is_from_local() || is_uri_host_local())) { sl_send_reply("403", "Relaying is forbidden"); break; }; t_on_failure("1"); } else if (method == "BYE" || method == "CANCEL") { end_media_session(); };
# Force subsequent messages to pass trough this proxy if (method == "INVITE") { record_route(); };
if (client_nat_test("3") && !search("^Record-Route:")) { # Mark as NAT'ed force_rport(); fix_contact(); };
#if (method=="INVITE") { t_on_reply("1"); #}; if (is_uri_host_local()) { if (!lookup("location")) { sl_send_reply("404", "User not found"); break; }; };
if (method=="INVITE" || method=="ACK") { use_media_proxy(); }; if(!(src_port==5065 && src_ip==72.21.40.107)){ if (method=="INVITE" || method=="BYE") { log("amit: Forwarding to B2bua\n"); forward(72.21.40.107,5065); break; }; }; if (loose_route()) { if (method=="INVITE" || method=="ACK") { use_media_proxy(); }; # end media session for BYE and CANCEL is done above # before entering the loose route. no need to call it here t_relay(); break; };
if (!t_relay()) { if (method=="INVITE" || method=="ACK") { end_media_session(); }; sl_reply_error(); }; }
failure_route[1] {
end_media_session(); }
onreply_route[1] {
#if (status=~"(183)|(2[0-9][0-9])") { if (status=~"[1-2][0-9][0-9])") { if (client_nat_test("1")) { fix_contact(); }; use_media_proxy(); };
}
Thanks for your help
amit