[Serusers] CPL-C and call forward on busy or no answer

Brinker, Oliver Oliver.Brinker at t-systems.com
Thu Jun 24 16:51:08 CEST 2004


Hi Bogdan,

Exactly that was the problem ;-) After removing the proxy_route param
call forward on busy or no answer works. Is it possible to control the
timeout value for call forward on no answer via the CPL script? Only
changing "modparam("tm","fr_inv_timer",30)" in ser.cfg seems to take 
effect. Again, many thanks for your help.

Regards,
Oliver    


Bogdan-Andrei IANCU [mailto:iancu at fokus.fraunhofer.de] wrote 

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 at 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
>> 
>>
>>    
>>
>
>  
>




More information about the sr-users mailing list