Hi,
In the case of following script in configuration file, client1's ack would not reach the client1, but if I comment "record_route();" everything will works fine. if (method=="INVITE") { log(1, "INVITE\n"); record_route(); }; What's the problem with my config file:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd) #fork=yes #log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode debug=7 fork=no log_stderror=yes debug=2 log_stderror=yes */ debug=255 check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) port=5060 children=4 fifo="/tmp/ser_fifo"
# ------------------ module loading ---------------------------------- loadmodule "/usr/local/lib/ser/modules/print.so" loadmodule "/usr/local/lib/ser/modules/textops.so" loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
# Uncomment this if you want to use SQL database loadmodule "/usr/local/lib/ser/modules/mysql.so" loadmodule "/usr/local/lib/ser/modules/auth_radius.so" loadmodule "/usr/local/lib/ser/modules/group_radius.so" loadmodule "/usr/local/lib/ser/modules/uri_radius.so"
loadmodule "/usr/local/lib/ser/modules/pa.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/usrloc.so" loadmodule "/usr/local/lib/ser/modules/registrar.so" loadmodule "/usr/local/lib/ser/modules/acc.so" loadmodule "/usr/local/lib/ser/modules/xlog.so"
#loadmodule "/usr/local/lib/ser/modules/jabber.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/local/lib/ser/modules/auth.so" loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters --------------- modparam("auth_radius", "radius_config","/usr/local/etc/radiusclient/radiusclient.conf") modparam("registrar", "default_expires", 120) modparam("registrar", "use_domain", 1)
# -- usrloc params -- modparam("usrloc", "use_domain", 1) modparam("usrloc", "db_mode", 0)
# -- jabber params -- #modparam("jabber", "db_url", "sql://ser:dclone@217.11.17.36/ser") #modparam("jabber", "jaddress", "localhost") #modparam("jabber", "jport", 5222)
#modparam("jabber","workers",2) #modparam("jabber","max_jobs",10) #modparam("jabber","cache_time",200) #modparam("jabber","delay_time",60) #modparam("jabber","jdomain","wcpserver.digitalclone.net=*") #modparam("jabber", "jdomain", "wcpserver.digitalclone.net=*") #modparam("jabber","aliases","4;yahoo.wcpserver.digitalclone.net") #modparam("jabber","aliases","4;aim.wcpserver.digitalclone.net;icq.wcpserver .digitalclone.net;msn.wcpserver.digitalclone.net=%;yahoo.wcpserver.digitalcl one.net;")
# -- usrloc params -- modparam("auth_db", "db_url","sql://ser:dclone@217.11.17.36/ser") modparam("usrloc", "db_url","sql://ser:dclone@217.11.17.36/ser") #modparam("acc", "db_url","sql://ser:dclone@217.11.17.36/ser")
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database # for persistent storage and comment the previous line #modparam("usrloc", "db_mode", 2)
# -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) # 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) # -- acc params -- modparam("acc", "log_level", 1) # that is the flag for which we will account -- don't forget to # set the same one :-) #modparam("acc", "log_flag", 1 )
modparam("acc", "radius_flag", 1 )
modparam("xlog", "buf_size", 8192) # ------------------------- request routing logic -------------------
# main routing logic
route {
xlog("L_WARN ", "\n\n time [%Tf]\n method <%rm>\n r-uri <%ru>\n call-id <%ci >\n cseq <%cs>\n contact header <%ct>\n From uri <%fu>\n From tag <%ft>\n"); xlog("L_WARN ", "To uri <%tu>\n To tag <%tt>\n SIP message id <%mi>\n IP source address <%is>\n\n");
if ( !mf_process_maxfwd_header("10") ) { sl_send_reply("483","To Many Hops"); drop(); };
/* record-route INVITEs -- all subsequent requests must visit us */ if (method=="INVITE") { log(1, "INVITE\n"); # record_route(); }; # for testing purposes, simply okay all REGISTERs if (method=="REGISTER") { log(1, "Register\n"); if (t_newtran()) { save("location"); log("REGISTER received -> reply okay\n"); }; if(search("egistration")) { log(1, "egistration\n"); sl_send_reply("200", "Accepted"); } else { log(1, "not egisteration\n"); sl_send_reply("200", "Accepted"); }; break; }; if (method=="SUBSCRIBE") { log(1, "Subscribe\n"); if (t_newtran()) { log(1, "Registrar\n"); handle_subscription("registrar"); }; break; }; if (method=="ACK") { log(1, "ACK\n"); break; }; if (method=="BYE") { log(1, "BYE\n"); break; }; if (method=="CANCEL") { log(1, "CANCEL\n"); break; }; if (method=="INFO") { log(1, "INFO\n"); break; }; if (method=="MESSAGE") { log(1, "MESSAGE\n"); break; }; if (method=="NOTIFY") { log(1, "NOTIFY\n"); break; }; if (method=="UNSUBSCRIBE") { log(1, "UNSubscribe\n"); break; };
#forward international N digit requests to gateway if(uri=~"^sip:[0-9]*@") { rewritehostport("217.218.68.12:5060"); log(1,">>>>>>>>>>>>international expression match\n"); #addRecordRoute(); route(2); break; };
if(!lookup("location")) { sl_send_reply("404","Not found"); break; };
if (!t_relay()) { log(1, "t_relay\n"); sl_reply_error(); };
setflag(1);
} route[2] { forward(uri:host, uri:port); log(1,"route[2]:SIP-to-PSTN call routed\n"); if(!t_relay()) { sl_reply_error(); }; }