Hi All,
I have set up a SIP network and is able to establish voice calls between two Xten X-Lite clients successfully. I configured the SER to force_rtp() regardless if a client is behind or not.
I am conducting a test between Zultys ZIP 4x4 SIP phone and Xten X-Lite. So far I can successfully establish a call between the X-lite and the ZIP4x4. However, neither end can hear each other's voice. Can someone give me some suggestions, please?
Thank you,
Dan.
ps: the following is my configuration file:
# ----------- global configuration parameters ------------------------
# debugging mode debug=3 fork=yes log_stderror=yes
check_via=no dns=no rev_dns=no port=5060 children=4 fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
loadmodule "/usr/local/lib/ser/modules/nathelper.so" loadmodule "/usr/local/lib/ser/modules/textops.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/registrar.so" loadmodule "/usr/local/lib/ser/modules/usrloc.so" loadmodule "/usr/local/lib/ser/modules/sl.so" loadmodule "/usr/local/lib/ser/modules/mysql.so" loadmodule "/usr/local/lib/ser/modules/auth.so" loadmodule "/usr/local/lib/ser/modules/auth_db.so" loadmodule "/usr/local/lib/ser/modules/acc.so"
# ----------------- setting module-specific parameters --------------- # -- usrloc params -- modparam("usrloc", "db_mode", 1) modparam("usrloc", "db_url", "sql://ser:heslo@dhcp32.bbtranz.co.nz/ser")
# -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "db_url", "sql://ser:heslo@dhcp32.bbtranz.co.nz/ser") modparam("auth_db", "password_column", "password")
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# -- nathelper params -- modparam("nathelper", "natping_interval", 60) modparam("nathelper", "ping_nated_only", 1) # special NAT flag indicates that a registered client is behind NAT modparam("registrar", "nat_flag", 6)
# -- acc params -- #modparam("acc", "log_level", 1) #modparam("acc", "log_flag", 1) modparam("acc", "db_url", "sql://ser:heslo@dhcp32.bbtranz.co.nz/ser") modparam("acc", "db_missed_flag", 3) modparam("acc", "db_flag", 1)
# ------------------ request-routing script --------------------------
# main routing logic
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); break; }; if (msg:len >= max_len ) { sl_send_reply("513", "Message too big"); break; };
# compulsory processing of Route header fields and adding RR loose_route();
# Test if a SIP message was sent behind NAT -- force use of rport #if (nat_uac_test("3")) { setflag(6); # remember this is ATA force_rport(); fix_nated_contact(); #};
/* registration (uses rewritten contacts) */ if (method=="REGISTER") { if (!www_authorize("my_domain", "subscriber")) { www_challenge("my_domain", "0"); break; }; save("location"); break; };
if (method=="INVITE") { record_route(); if (isflagset(6)) { fix_nated_sdp("3"); }; /* set up reply processing */ t_on_reply("1"); };
if (method == "INVITE" || method == "CANCEL") { if (!lookup("location")) { sl_send_reply("404", "Not Found"); acc_log_request("404 Not Found"); break; }; };
if (method == "INVITE" || method == "BYE") { setflag(1); } # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP route(1); }
route[1]{ # test if the current request was sent behind NAT if (isflagset(6)) { record_route(); t_on_reply("1"); if (method=="INVITE") { force_rtp_proxy(); append_hf("P-hint: request forced to rtp proxy\r\n"); }; };
if (!t_relay()) { sl_reply_error(); };
}
# all incoming replies for t_onrepli-ed transactions enter here onreply_route[1] { if(isflagset(6)) { fix_nated_contact(); append_hf("P-hint: fixed NAT contact for response\r\n"); }; if ( (status=~"200" || status=~"183") ) { if(isflagset(6)) { force_rtp_proxy(); append_hf("P-hint: request forced to rtp proxy\r\n"); }; }; }