[Serusers] pc2pc problem

andayesh andayesh at digitalclone.net
Thu May 20 14:15:21 CEST 2004


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();
	};
}




More information about the sr-users mailing list