Hi Oliver,
The problem is in your configuration :-). cpl-c module param "proxy_route" doesn't refer to a route that does proxy(relying) as you configure, but to a route to be processed before cpl-c does proxy (this is does internally). So. basically you were trying to do twice transaction creations and req. relaying.
so, in your case, please remove the "proxy_route" param.
bogdan
Brinker, Oliver wrote:
Hi Bogdan,
please find attached my ser configuration. I'm using the cvs head version downloaded two days ago (22.06.04). Should be actual enough ;) Thanks a lot.
Regards, Oliver
# # $Id: ser.cfg,v 1.24 2003/11/11 15:32:36 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
# log into /var/log/messages debug=9 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=no # (cmd line: -E)
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"
# Additional Alias alias="sip.et123lab.de"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/local/lib/ser/modules/mysql.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/textops.so"
# CPL-C module loadmodule "/usr/local/lib/ser/modules/cpl-c.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 ---------------
# -- usrloc params --
#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)
# -- cpl-c params -- modparam("cpl-c","cpl_db","mysql://xxxx:xxxx@localhost/ser") modparam("cpl-c","cpl_table","cpl") modparam("cpl-c","cpl_dtd_file","/usr/local/etc/ser/cpl-06.dtd") modparam("cpl-c","log_dir","/var/log/ser/cpl") modparam("cpl-c","proxy_recurse",2) modparam("cpl-c","proxy_route",1) modparam("cpl-c","lookup_domain","location")
# -- timer settings -- modparam("tm","noisy_ctimer",1) # this will force timeout modparam("tm","fr_inv_timer",30) # sets the timeout for INVITE to 30 sec (default is 120)
# ------------------------- request routing logic -------------------
# 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; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); break; };
if (!uri==myself) { # mark routing logic in request append_hf("P-hint: outbound\r\n"); route(1); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) {
if (method=="REGISTER") { # Uncomment this if you want to use digest authentication if (!www_authorize("sip.et123lab.de", "subscriber")) { www_challenge("sip.et123lab.de", "0"); break; }; # handle REGISTER messages containing a CPL script cpl_process_register(); save("location"); break; }; # process CPL script log("cpl: start script processing now"); cpl_run_script("incoming","FORCE_STATEFUL"); log("cpl: script processing has been finished"); lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); break; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; };
}; append_hf("P-hint: usrloc applied\r\n"); route(1); }
route[1] { # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; }
Bogdan-Andrei IANCU [mailto:iancu@fokus.fraunhofer.de] wrote
Hi Oliver,
please send me your ser.cfg - it will help me to trace the problem. Also be sure you are using the latest cvs head version - there were some updates 1 or 2 weeks ago.
Regards, Bogdan
Brinker, Oliver wrote:
Hi Bogdan,
I solved the problem with SER startup. The reason was that I download the CVS head onto my notebook and copy it via ftp to the linux server. After downloading CVS head directly onto the linux server, compiling and installing it SER starts up without any error message.
But I have still the problem with call forwarding on busy or no answer. Inserting log information into my CPL script I can reproduce that SER is never processing the <busy> or <noanswer> tag and the following tags. I try out the example script from the current IETF CPL draft for Call Forward Busy/No Answer in the following scenario:
6131 forwards calls to 613 if busy -> 6131 has an active session with 614 -> 612 calls 6131 -> 6131 is busy and SER should invite 613
After uploading the CPL script for 6131 the caller 614 cannot reach 6131 and the syslog represents the attached error message.
Can you identify any mistake I've done in my configuration? Many thanks.
Best Regards,
Oliver