[Serusers] ser dead but subsys locked, no config works?

Marian Dumitru marian.dumitru at voice-sistem.ro
Tue Oct 5 10:45:52 CEST 2004


Hi Robert,

if I'm not wrong, the command line parameters are overwritten by the 
config file (maybe you should look into syslog for possible errors). So, 
if you want to have as much as possible information about SER failure, 
uncomment in your ser.cfg the part for debugging mode (starts with "/* 
Uncomment these lines to enter debugging mode").
Than try to start again ser and see what's wrong (if any).

regards,
Marian

Robert C. Auch wrote:

>I was editing my working 0.8.14 system today, and obviously have a bad config file.  in the course of fixing the numerous problems, I came across this error when trying to start ser:
>root @ sip> /etc/rc.d/init.d/ser start
>starting ser..         [ok]
>root @ sip> /etc/rc.d/init.d/ser status
>ser dead but subsys locked
>root @ sip> rm -f /var/run/ser.pid
>root @ sip> rm -f /var/lock/subsys/ser
>root @ sip> rm -f /tmp/ser_fifo
>root @ sip> /etc/rc.d/init.d/ser status
>ser not running
>root @ sip> ser
>Listening on
>              x.x.x.243 [x.x.x.243]:5060
>              127.0.0.1 [127.0.0.1]:5060
>Aliases: localhost:5060 localhost.localdomain:5060 snort:5060 snort.mydomain.com:5060 127.0.0.1:* x.x.x.243:* sip.mydomain.com:* mydomain.com:*
>
>root @ sip> serctl ps
><hang here>
>ctrl-C
>[root at sip root]# ps -aux | grep "\bser"
>root      6556  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6560  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6563  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6567  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6570  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6571  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6572  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6577  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6578  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6579  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6580  0.0  0.6 37808 3184 ?        S    18:05   0:00 ser
>root      6585  0.0  0.6 37808 3200 ?        S    18:05   0:00 ser
>[root at sip root]# serctl moni
>[cycle #: 1; if constant make sure server lives and fifo is on]
>[root at sip root]# ser -E -ddddddd -D
>[root at sip root]# ser -E -D -ddddddddddd
> 0(6654) read 639376042 from /dev/random
> 0(6654) seeding PRNG with 1736314101
> 0(6654) test random number 377719587
> 0(6654) shm_mem_init: success
> 0(6654) DEBUG: register_fifo_cmd: new command (print) registered
> 0(6654) DEBUG: register_fifo_cmd: new command (uptime) registered
> 0(6654) DEBUG: register_fifo_cmd: new command (version) registered
> 0(6654) DEBUG: register_fifo_cmd: new command (pwd) registered
> 0(6654) DEBUG: register_fifo_cmd: new command (arg) registered
> 0(6654) DEBUG: register_fifo_cmd: new command (which) registered
> 0(6654) DEBUG: register_fifo_cmd: new command (ps) registered
> 0(6654) DEBUG: register_fifo_cmd: new command (kill) registered
>Listening on
>              x.x.x.243 [x.x.x.243]:5060
>              192.168.5.179 [192.168.5.179]:5060
>              127.0.0.1 [127.0.0.1]:5060
>Aliases: localhost:5060 localhost.localdomain:5060 snort:5060 snort.mydomain.com:5060 127.0.0.1:* x.x.x.243:* sip.mydomain.com:* mydomain.com:*
>[root at sip root]#
> 
>serctl shows the same thing.  This is even with my previously working config file, AND after re-running the "make all" and "make install" on 0.8.14_src.tar.gz
> 
>ser.cfg attached as example.exe
> 
>I'm starting ser with only the pid file option (-p I think).  a while back I chown'd and chgroup'd the ser folders to a user and group called "ser", but haven't added the -u and -g options to my startup, cause I can't figure out how to get it to work properly that way.
> 
>Yes, I'm a linux n00b, and have been reading serusers for a few weeks - 90% of my questions so far have been answered through there - I just can't find any answers to this other than one guy in May who just reinstalled, and that solved it.
> 
>Thanks!
> 
>Rob 
> 
> 
> 
> 
>  
>
>------------------------------------------------------------------------
>
>#
># $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
>*/
>
>check_via=yes  #(cmd line: -v)
>dns=no         #(cmd line: -r)
>rev_dns=no     #(cmd line: -R)
>port=5060
>children=4
>fifo="/tmp/ser_fifo"
>
>sip_warning=yes
>server_signature=yes
>reply_to_via=no
>listen=x.x.x.243
>listen=127.0.0.1
>
>alias=mydomain.com
>alias=sip.mydomain.com
>alias=x.x.x.243
>alias=127.0.0.1
>
># ----------------module loading ----------------------------------------------------------
>
># MySQL Support
>loadmodule "/usr/local/lib/ser/modules/mysql.so"
># unknown
>loadmodule "/usr/local/lib/ser/modules/sl.so"
># T-relay?
>loadmodule "/usr/local/lib/ser/modules/tm.so"
># Record-routing and Loose-routing module
>loadmodule "/usr/local/lib/ser/modules/rr.so"
># Count max forwards
>loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
># use of MySQL database for user location state saving
>loadmodule "/usr/local/lib/ser/modules/usrloc.so"
>loadmodule "/usr/local/lib/ser/modules/registrar.so"
># Comment these lines to disable digest authentication
>loadmodule "/usr/local/lib/ser/modules/auth.so"
>loadmodule "/usr/local/lib/ser/modules/auth_db.so"
># Accounting support - requires mysql
>loadmodule "/usr/local/lib/ser/modules/acc.so"
># Execute outside programs
>loadmodule "/usr/local/lib/ser/modules/exec.so"
># Allow use of group membership
>loadmodule "/usr/local/lib/ser/modules/group.so"
>#loadmodule "/usr/local/lib/ser/modules/print.so"
># URI and Text operations support - allows lines like 'if uri=~"[679][0-9]+@"'
># and 'if (search(from:|F:))' in routing code
>loadmodule "/usr/local/lib/ser/modules/uri.so"
>loadmodule "/usr/local/lib/ser/modules/textops.so"
># NAT Transversal support - required for NAT support, but forces all traffic
># to proxy through our server, which greatly limits scalability
>loadmodule "/usr/local/lib/ser/modules/mediaproxy.so"
>loadmodule "/usr/local/lib/ser/modules/nathelper.so"
># Native Voicemail support
>loadmodule "/usr/local/lib/ser/modules/vm.so"
>
>#-----------------module-specific parameters ----------------------------------------------
>#-----userloc parameters-----------------------
>#Set this at 0 to disable SQL database support for persistant storage
>#Set at 2 to use MySQL
>modparam("usrloc", "db_mode", 2)
>
>#-----auth params------------------------------
>#required for auth module
>modparam("auth", "secret", "43789bfdbc34890")
>modparam("auth_db", "calculate_ha1", 1)
># If you set "calculate_ha1" parameter to 1 (true), you need the following line:
>modparam("auth_db", "password_column", "password")
>modparam("usrloc", "db_url", "mysql://ser:nscser@localhost/ser")
>
>#-----rr params -------------------------------
># add value to lr param to make some broken UAs happy
>modparam("rr", "enable_full_lr", 1)
>#-----tm params
># fr_timer is the timeout for transactions
>modparam("tm", "fr_timer", 18)
># fr_inv_timer is the timeout for opening calls (INVITE)
>modparam("tm", "fr_inv_timer", 24)
>
>#-----accounting paramters--------------------
>modparam("acc", "log_level", 1)
>modparam("acc", "log_flag", 1)
>modparam("acc", "db_url", "mysql://ser:nscser@localhost/ser")
>modparam("acc", "report_ack", 1)
>modparam("acc", "failed_transactions", 1)
>modparam("acc", "db_flag", 1)
>modparam("acc", "report_cancels", 1)
>modparam("acc", "db_missed_flag", 1)
>modparam("acc", "log_fmt", "fisum")
>
>#-----nathelper and mediaproxy paramters-------
>modparam("nathelper", "natping_interval", 10)
>
>
>#-----voicemail paramters----------------------
>modparam("voicemail", "db_url", "sql://ser:nscser@localhost/ser")
>modparam("voicemail", "email_column", "email")
>modparam("voicemail", "subscriber_table", "subscriber")
>modparam("voicemail", "user_column", "user")
>modparam("voicemail", "domain_column", "domain")
>
>#-----------------END Module Parameters -----------------------------------------------
>#-----------------routing logic begins here -------------------------------------------
>#-----main routing logic
>
>route{
>
>	setflag(1);
>
>	# 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");
>		log(1, "LOG:483 - Too Many Hops, dropping connection\n");
>		break;
>	};
>	if (msg:len > max_len) {
>		sl_send_reply("513", "Message Too Big");
>		log(1, "LOG:513-Message too Big, dropping connection\n");
>		break;
>	};
>
>	# Special Handling for NATed clients:
>	# First, NAT test is executed - it looks
>	# for via!=recieved and RFC1918 addresses
>	# in contact (may fail if line-folding is used);
>	# also the recieved test should, if completed,
>	# check all vias for precense of recieved.
>	if (nat_uac_test("3")) {
>		# Allow RR-ed requests, as these may
>		# indicate that a NAT-enabled proxy
>		# already handles it, unless REGISTER
>		# also, allow VPN users from 172.16.8.0/24
>		if (method == "REGISTER" || !search("^Record-Route:") || !uri=~"172\.16\.8\.[0-9]+@") {
>			log(1, "LOG:Someone trying to register from private IP, rewriting\n");
>			# THis only works for UAs that support
>			# symmetric communication - works on most
>			fix_nated_contact();
>			if (method == "INVITE") {
>				fix_nated_sdp("1");  # Add direction=active to SDP
>			};
>			force_rport();               # Add rport parameter to topmost Via
>			setflag(6);                  # Mark as NATed
>		};
>	};
>
>	# We Record-Route all messages - to make sure
>	# that subsequent messages will go through
>	# our proxy - neccessary for accounting, and if
>	# downstream entities use different transport
>	# protocol
>	record_route();
>
>	# If the request is for other domain, use UsrLoc
>	# (in case it doesn't work, use the following
>	# command with proper names and addresses)
>	# This requires use of "alias=" in global parameters
>	lookup("aliases");
>	if (uri==myself) {
>		if (method == "REGISTER") {
>			# Force digest authentication, but not for the PBX Gateway
>			if (!www_authorize("mydomain.com", "subscriber") && !(src_ip==x.x.x.155)) {
>				www_challenge("mydomain.com", "0");
>				break;
>			};
>			if (!is_user("replicator") && !check_to()) {
>				log(1, "LOG: unregistered user registration attempt\n");
>				sl_send_reply("403", "Only registered users allowed");
>				break;
>			};
>			if (!save("location")) {
>				sl_reply_error();
>				log(1, "LOG: error saving location\n");
>			};
>			break;
>		};
>
>		# Native SIP destinations are handled using userloc DB
>		if (!lookup("location")) {
>			if (does_uri_exist()) {
>				# Can't find the user's location, but know they
>				# are a subscriber?  Check if they are a voicemail
>				# user and send them there, otherwise, tell UA
>				# that callee is offline.
>				if (is_user_in("To", "voicemail")) {
>					vm("/tmp/vm_fifo", "vlicemail");
>					log(1, "LOG: Caller sent to Voicemail\n");
>					break;
>				};
>				sl_send_reply("404", "User Offline");
>				log(1, "LOG: User offline\n");
>				break;
>			};
>			if (uri=~"^sip:[679][0-9]+@") {
>				# /6([0-9]+)/ goes to voicemail for $1
>				# /7([0-9]+)/ goes to extension $1
>				# /9([0-9]+)/ goes to outside number $1 (dials the 9 for you)
>				# so we just check that they are a valid PBX user
>				# so nobody outside uses us as a free PBX
>				if (is_user_in("From", "freepstn")) {
>					rewritehostport("voip-pbx.mydomain.com:5060");
>					forward(uri:host, uri:port);
>					log(1, "LOG: User dialing PBX Gateway\n");
>					break;
>				};
>				sl_send_reply("403", "Only registered users allowed");
>				break;
>			};
>			sl_send_reply("404", "Location not found");
>			log(1, "LOG: Dial placed to unknown location\n");
>			break;
>		};
>		route(1);
>		break;
>	};
>}
>
>route[1]
>{
>	lookup("aliases");
>	if (uri=~"[@:](192\.168\.|10\.|172\.(1[7-9]|2[0-9]|3[0-2])\.)" && !search("^Route:")) {
>		sl_send_reply("479", "We don't forward to private IP addresses");
>		log(1, "LOG: Forward attempted to private IP address\n");
>		break;
>	};
>
>	# If client or server known to be behind NAT, enable relay
>	if (isflagset(6)) {
>		force_rtp_proxy();
>		log(1, "LOG: forcing RTP Proxy\n");
>	};
>
>	# NAT processing of replies: apply to all transactions
>	# (for example re-INVITEs from public to private
>	# UA are hard to identify as NATed at the moment of
>	# request processing); look at replies
>	t_on_reply("1");
>
>	# loose-route processing
>	if (loose_route()) {
>		t_relay();
>		break;
>	};
>
>	# forward to current uri now: use stateful forwarding:
>	# use stateful forwarding - it works reliably even if
>	# we forward from TCP to UDP
>	if (!t_relay()) {
>		sl_reply_error();
>	};
>}
>
>onreply_route[1]
>{
>	# NATed transaction?
>	if (isflagset(6) && status=~"(183)|2[0-9][0-9]") {
>		fix_nated_contact();
>		force_rtp_proxy();
>		log(1, "LOG: Fixed NATed contact, forced RTP PRoxy on reply\n");
>		# otherwise, it is a transaction behind a NAT and we
>		# did not know at time of request processing? (RFC1918 contacts)
>	} else if (nat_uac_test("1")) {
>		fix_nated_contact();
>	};
>}
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Serusers mailing list
>serusers at lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
>  
>




More information about the sr-users mailing list