Hi,
I've a following problem: I'm dialing over voip to another domain. Everything swings except that when a remote party hangs up, I don't get a disconnect signal at my caller. Instead I'm getting ". I'm pretty sure I messed up something with my force/unforce proxy but I just can't get it working right. Note that when I'm calling to the PSTN (same transit proxy) through Asterisk I do get the disconnect signal. Any help would be appreciated :). Below is the config of my local proxy. I can post my transit proxy conf if needed.
Thanks, Maciek
debug=3 fork=no log_stderror=yes
listen=<local_proxy> port=5060 children=4
mpath="/usr/local/lib/openser/modules/"
dns=no rev_dns=no alias="yam" fifo="/tmp/ser_fifo" fifo_db_url="mysql://openser:openserrw@localhost:3306/openser"
loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so"
loadmodule "mysql.so"
loadmodule "auth.so" loadmodule "auth_db.so"
loadmodule "uri.so" loadmodule "uri_db.so"
loadmodule "domain.so" loadmodule "nathelper.so" loadmodule "textops.so"
loadmodule "avpops.so" loadmodule "permissions.so" loadmodule "uac.so"
loadmodule "acc.so" loadmodule "auth_radius.so" loadmodule "group_radius.so" loadmodule "avp_radius.so"
loadmodule "xlog.so"
loadmodule "cpl-c.so" loadmodule "exec.so"
#modparam("auth_db","calculate_ha1",1) #modparam("auth_db","password_column","password") modparam("auth_db|permissions|uri_db|usrloc|cpl-c","db_url","mysql://openser:openserrw@localhost:3306/openser")
modparam("usrloc", "db_mode", 2) modparam("usrloc|registrar","use_domain",1) modparam("rr", "enable_full_lr", 1)
modparam("tm", "fr_inv_timer", 120) #modparam("tm", "fr_inv_timer_avp", "inv_timeout")
modparam("permissions", "db_mode", 1) modparam("permissions", "trusted_table", "trusted")
modparam("nathelper","rtpproxy_sock","unix:/var/run/rtpproxy.sock") modparam("nathelper","natping_interval",0) modparam("nathelper","ping_nated_only",1)
modparam("registrar","nat_flag",6) modparam("registrar","sip_natping_flag",7)
modparam("avpops", "avp_url", "mysql://openser:openserrw@localhost:3306/openser") modparam("avpops", "avp_table", "usr_preferences") modparam("avpops", "use_domain", 1)
modparam("acc", "radius_flag",1) modparam("acc", "radius_missed_flag", 2) modparam("acc", "log_flag", 1) modparam("acc", "log_missed_flag", 1) modparam("acc", "service_type", 15) modparam("acc", "radius_extra", "Sip-Src-IP=$si;Sip-Src-Port=$sp") modparam("acc", "report_ack",1) modparam("acc|auth_radius|group_radius|avp_radius","radius_config","/usr/local/etc/radiusclient-ng/radiusclient.conf")
modparam("group_radius", "use_domain", 1)
modparam("avpops", "avp_aliases", "day=i:101;time=i:102")
modparam("cpl-c","cpl_table","cpl") modparam("cpl-c","cpl_dtd_file","/usr/local/etc/openser/cpl-06.dtd") #modparam("cpl-c","log_dir","/var/log/openser") modparam("cpl-c","lookup_domain","location") modparam("cpl-c","use_domain",1) modparam("cpl-c","nat_flag",6) modparam("cpl-c","proxy_recurse",2) modparam("cpl-c","proxy_route", 0) #modparam("cpl-c","timer_avp","i:5")
route{ #-------------------------------------- # Sanity Check Section #-------------------------------------- if (!mf_process_maxfwd_header("10")){ sl_send_reply("483", "Too Many Hops"); return; }; if (msg:len > max_len){ sl_send_reply("513", "Message Overflow"); return; };
#-------------------------------------- # Record Route Section #-------------------------------------- if (method!="REGISTER") { record_route(); };
if (method=="BYE" || method=="CANCEL"){ xlog("L_INFO","$tu\n $fu\n $ru\n"); unforce_rtp_proxy(); };
#-------------------------------------- # Loose Route Section #-------------------------------------- if (loose_route()) { log(1,"loose route\n"); if (is_method("BYE")) { unforce_rtp_proxy(); sl_send_reply("200","Bye"); # acc_rad_request("200"); # acc_log_request("200"); }
if((method=="INVITE" || method=="REFER") && !has_totag()) { sl_send_reply("403","Forbidden"); return; };
if (method=="INVITE") { if (!allow_trusted()) { if (!radius_www_authorize("")) { www_challenge("","0"); return; } else if(!check_from()) { sl_send_reply("403","Use From=ID"); return; };
consume_credentials(); }; if (nat_uac_test("19")) { setflag(6); force_rport(); fix_nated_contact(); }; # force_rtp_proxy("1"); force_rtp_proxy("s"); };
route(1); return; };
#-------------------------------------- # Call Type Processing Section #--------------------------------------
if (!is_uri_host_local()) { if (is_from_local() || allow_trusted()) { route(4); route(1); } else { sl_send_reply("403", "Forbidden"); }; return; };
if (method=="ACK") { route(1); return; } else if(method=="CANCEL"){ route(1); return; } else if (method=="INVITE"){ if(!cpl_run_script("incoming", "is_stateless")) { # script execution failed t_reply("500", "CPL script execution failed"); }; route(3); return; } else if (method=="REGISTER") { cpl_process_register(); route(2); return; };
lookup("aliases"); if (!is_uri_host_local()) { route(4); route(1); return; };
if (!lookup("location")){ # xlog("L_INFO"," $ru \n, $fu \n, $tu \n"); sl_send_reply("404", "User Not Found"); return; };
route(1); }
route[1] { #-------------------------------------- # Default Message Handler #--------------------------------------
t_on_reply("1");
if (!t_relay()) { if(method=="INVITE" && isflagset(6)) { unforce_rtp_proxy(); }; sl_reply_error(); }; }
route[2] { #-------------------------------------- # REGISTER Message Handler #-------------------------------------- sl_send_reply("100", "Trying");
if(!search("^Contact:[ ]**") && nat_uac_test("19")) { setflag(6); fix_nated_register(); force_rport(); };
sl_send_reply("100","Trying");
if(!radius_www_authorize("")) { www_challenge("","0"); return; };
if(!check_to()){ sl_send_reply("401","Unauthorized"); return; };
consume_credentials();
if (!save("location")) { sl_reply_error(); }; }
route[3] { #----------------------- # INVITE Message Handler #-----------------------
if (!allow_trusted()) {
if(!radius_www_authorize("")) {
www_challenge("","0"); return; } else if (!check_from()){ sl_send_reply("403","Use From=ID"); return; };
consume_credentials(); };
if(nat_uac_test("19")) { setflag(6); };
avp_load_radius("caller");
# setflag(1); # setflag(2);
route(9); # CLIP/CLIR route(8); # Check if number is blocked route(7); # Set/remove call forwarding
route(10); # VPABX
lookup("aliases");
if(!is_uri_host_local()) { route(4); route(1); return; };
if (avp_db_load("$ru/username", "$avp(s:callfwd)")) { setflag(22); avp_pushto("$ru", "$avp(s:callfwd)"); route(6); return; };
if (!lookup("location")) { #Outbound domain
if (uri=~"^sip:[0-9]{10}@") { route(4); route(5); return; }; sl_send_reply("404", "User Not Found"); return; };
if (avp_db_load("$ru/username", "$avp(s:fwdonbusy)")) { if (!avp_check("$ru(s:fwdonbusy)", "eq/$ru/i")) { setflag(26); }; };
if (avp_db_load("$ru/username", "$avp(s:fwdnoanswer)")) { if (!avp_check("$avp(s:fwdnoanswer)", "eq/$ru/i")) { setflag(27); }; };
t_on_failure("1"); route(4); route(1); }
route[4] { # ---------------------- # NAT Traversal Section # ----------------------
if (isflagset(6)) { force_rport(); fix_nated_contact(); # force_rtp_proxy("i"); force_rtp_proxy(); }; }
route[5] { #---------------------- # Main Domain Handler #----------------------
if (uri=~"^sip:022448755[0-9]@"){ sl_send_reply("404","User Not Found"); drop; }
xlog("L_INFO","Main domain Handler: address changed to <outbound_proxy>\n"); #rewritehostport("<outbound_proxy>:5061"); rewritehost("<outbound_proxy>"); t_on_failure("1");
route(1); }
route[6] { # ------------------------- # Call Forwarding Handler # -------------------------
if (uri=~"^sip:1[0-9]{10}@") { strip(1); };
lookup("aliases"); revert_uri(); append_branch(); if (!is_uri_host_local()) { if (!isflagset(22)) { append_branch(); }; route(4); route(1); return; };
if (uri=~"^sip:00[0-9]{10}@") { route(4); route(1); return; };
if (!lookup("location")) { if (uri=~"^sip:[0-9]{10}@") { route(4); route(1); return; }; sl_send_reply("404", "3User Not Found"); };
route(4); route(1); }
route[7] { ####################################### # Call forwarding setters #######################################
if(uri=~"^sip:*21*"){ subst_uri('/^sip:*21*(.*)@(.*)$/sip:\1@yam/'); avp_db_delete("$fu","$avp(s:callfwd)"); avp_write("$ru","$avp(s:callfwd)"); avp_db_store("$fu","$avp(s:callfwd)"); sl_send_reply("603", "Call forwarding set"); drop; };
if(uri=~"^sip:*31*"){ subst_uri('/^sip:*31*(.*)@(.*)$/sip:\1@yam/'); avp_db_delete("$fu","$avp(s:fwdonbusy)"); avp_write("$ru","$avp(s:fwdonbusy)"); avp_db_store("$fu","$avp(s:fwdonbusy)"); exec_msg("/home/pgrabowski/busy_fwd_cpl"); sl_send_reply("603", "Call forwarding on busy set"); drop; };
if(uri=~"^sip:*41*"){ subst_uri('/^sip:*31*(.*)@(.*)$/sip:\1@yam/'); avp_db_delete("$fu","$avp(s:fwdnoanswer)"); avp_write("$ru","$avp(s:fwdnoanswer)"); avp_db_store("$fu","$avp(s:fwdnoanswer)"); exec_msg("/home/pgrabowski/noanswer_fwd_cpl"); sl_send_reply("603", "Call forwarding on no answer set"); drop; };
if(uri=~"^sip:*22*"){ avp_db_delete("$fu","$avp(s:callfwd)"); sl_send_reply("603", "Call forwarding removed"); drop; };
if(uri=~"^sip:*32*"){ avp_db_delete("$fu","$avp(s:fwdonbusy)"); exec_msg("/home/pgrabowski/ser_work/rm_busy_fwd_cpl"); sl_send_reply("603", "Call forwarding on busy removed"); drop; };
if(uri=~"^sip:*42*"){ avp_db_delete("$fu","$avp(s:fwdnoanswer)"); exec_msg("/home/pgrabowski/ser_work/rm_noanswer_fwd_cpl"); sl_send_reply("603", "Call forwarding on no answer removed"); drop; };
}
route[8] { ################################## # Outgoing number blocking ##################################
if(avp_check("$avp(s:caller_blocked)","eq/$tu")){ sl_send_reply("403", "Forbidden"); return; }; }
route[9] { ################################# # CLIP/CLIR ################################# if(is_avp_set("$avp(s:caller_clip)")){ uac_replace_from("$avp(s:caller_clip)",""); }; if(is_avp_set("$avp(s:clir)")){ uac_replace_from("Restricted","sip:restricted@<local_proxy>"); };
}
route[10] { ################################# # VPABX ################################# if(uri=~"^sip:[0-9]{3}@"){ if (is_avp_set("$avp(s:caller_vpabx)")) { xlog("L_INFO","VPABX\n"); subst_uri('/^sip:(.*)$/sip:$avp(s:caller_vpabx)\1/'); xlog("$ru $tu\n"); } }
}
onreply_route[1] { if (isflagset(6) && (status=~"(180)|(183)|2[0-9][0-9]")) { if(!search("^Content-Length:[ ]*0")) { force_rtp_proxy(); }; };
if (nat_uac_test("1")) { fix_nated_contact(); }; }
failure_route[1] {
if (t_check_status("487")) { return; };
subst_uri('/^sip:(.*)@(.*)$/sip:100.\1@<local_proxy>/'); rewritehostport("<local_proxy>:5061"); append_branch(); t_relay(); }
---------------------------------------------------------------------- smieszne, muzyka, pilka, sexy, kibice, kino, ciekawe, extreme, kabaret http://link.interia.pl/f19d4 - najlepsze filmy w intermecie