[Serusers] Please, help with SUBSCRIBE timeouts

Andrey Kouprianov andrey.kouprianov at gmail.com
Wed Dec 14 07:49:02 CET 2005


Hi,

This is my 3rd email on this issue.. Please, help me with it.

I am having the problem with SUBSCRIBE requests in ser 0.9.3. I am not
using PA module,
because my PA and Watcher are located on the client side.

Whenever I try to subscribe to a presence with any entity OTHER than
myself, SER seems to receive the SUBSCRIBE request, however, it does
not forward it. Instead my application keeps on retransmitting
SUBSCRIBEs until SER replies with 408 Timeout... The same things
happen with NOTIFYs.

I must also mention that it is NOT all the time that SER replies with
timeout... Just most of the times. And only sometimes it lets the
SUBSCRIBE through (for that, I have to restart my app. again and
again, until I get the right result).

I included ser.cfg + traces. I've tried to use stateless forwarding (
forward(uri:host, uri:port) ) instead of stateful (as shown in my
ser.cfg), but it didnt work either.

Please, tell me what is wrong, because I'm out of ideas here... I
would settle even for reinstalling SER, if it's necessary.

Here's ser.cfg:

# ----------- 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
fork=no
log_stderror=yes
*/

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"
fifo_mode=0766

sip_warning=yes
server_signature=yes

alias=sip.interlab.ait.ac.th

# ------------------ 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"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/uri_db.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
loadmodule "/usr/local/lib/ser/modules/pa.so"

# ----------------- setting module-specific parameters ---------------
modparam("usrloc", "db_mode", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("rr", "enable_full_lr", 1)

# -------------------------  request routing logic -------------------
route{

	# initial sanity checks -- messages with
	# max_forwards==0, or excessively long requests
	if (!mf_process_maxfwd_header("10")) {
		log(1, "Message has too many hops. Message disgarted");
		sl_send_reply("483","Too Many Hops");
		break;
	};
	if (msg:len >= 4096 ) {
		log(1, "Message too big. Message disgarted");
		sl_send_reply("513", "Message too big");
		break;
	};
	
	#if (method!="REGISTER" ) record_route();	

	#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 (uri==myself) {
		if (method=="REGISTER") {
 	               	if (!www_authorize("sip.interlab.ait.ac.th", "subscriber")) {
        	                log(1, "Authentication for REGISTER");
                	        www_challenge("sip.interlab.ait.ac.th", "0");
                        	break;
                	};

                	#if(!is_user("replicator") & !check_to() ){
                        #	log(1, "Unregistered user registration attempt\n");
                        #	sl_send_reply("403", "Forbidden - Registered
users only");
                        #	break;
                	#};

                	if(!save("location")) {
                        	log(1, "Error saving AOR");
                        	sl_reply_error();
                	};
                	break;
		};

		lookup("aliases");
		if (uri!=myself) {
			append_hf("P-hint: outbound alias\r\n");
			route(1);
			break;
		};
		
		#Handle local offline or non-existent users
        	if(method=="INVITE") {
               		if(!lookup("location") ) {
                      		log(1, "INVITE for an offline user processing");
                      		route(3); #offline and non-existent users
                      		break;
               		};
        	};

		if(method=="SUBSCRIBE") {
 	               	if (!www_authorize("sip.interlab.ait.ac.th", "subscriber")) {
        	                log(1, "Authentication for SUBSCRIBE");
                	        www_challenge("sip.interlab.ait.ac.th", "0");
                        	break;
                	};

			if(!lookup("location") ) {
				log(1, "No registered user found for SUBSCRIBE");

				sl_send_reply("404", "Not Found");
				break;
			};
		};
		
		# native SIP destinations are handled using our USRLOC DB
		if(method=="NOTIFY") {
			if (!lookup("location")) {
				sl_send_reply("404", "Not Found");
				break;
			};
			
			log(1, "NOTIFY reveived");
		};
	};

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

# ------------ Process offline and non-existent users ----------
route[3] {
        # do not continue if it is a retransmission
        if(!t_newtran()) {
                sl_reply_error();
                break;
        };

        # use external script to send an email notification in case
        # user is offline, or just reply back with 404 (Not Found) if
        # the user is not a registered user
        if(!exec_msg('/home/andrey/sip_email.sh') ) {
                t_reply("404", "Not Found - User does not exist");
        }
        else {
                t_reply("404", "Not Found - User offline");
        };
        break;
}

 . . . . . . . .


Here are the traces:

Message 1 from 203.159.32.39:5060 to 203.159.31.36:5060


SUBSCRIBE sip:12345 at sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250 at 203.159.32.39
CSeq: 1 SUBSCRIBE
From: "Andrey Kuprianov" <sip:andrey at sip.interlab.ait.ac.th>;tag=15493888
To: <sip:12345 at sip.interlab.ait.ac.th>
Via: SIP/2.0/UDP
203.159.32.39:5060;branch=z9hG4bK3ad443c5b49de4b050bd2b028597a868
Max-Forwards: 70
Allow: REGISTER,INVITE,BYE,ACK,CANCEL,SUBSCRIBE,NOTIFY,MESSAGE
User-Agent: IntERLab User Agent 1.0a
Event:  presence
Expires: 600
Accept: application/pidf+xml,application/xpidf+xml,application/xvcresource+xml
Contact: <sip:andrey at 203.159.32.39:5060>
Content-Length: 0



Message 2 from 203.159.31.36:5060 to 203.159.32.39:5060


SIP/2.0 401 Unauthorized
Call-ID: 7762edc6f3954c87c8b95a0270653250 at 203.159.32.39
CSeq: 1 SUBSCRIBE
From: "Andrey Kuprianov" <sip:andrey at sip.interlab.ait.ac.th>;tag=15493888
To: <sip:12345 at sip.interlab.ait.ac.th>;tag=1a5a85ff3e08e000f4c2527642cf14ac.5e75
Via: SIP/2.0/UDP
203.159.32.39:5060;branch=z9hG4bK3ad443c5b49de4b050bd2b028597a868
WWW-Authenticate: Digest
realm="sip.interlab.ait.ac.th",nonce="439ee222efefefbb8cbb78e75d6d15b723a1e1d0"
Server: Sip EXpress router (0.9.3 (i386/freebsd))
Warning: 392 203.159.31.36:5060 "Noisy feedback tells:  pid=17754
req_src_ip=203.159.32.39 req_src_port=5060
in_uri=sip:12345 at sip.interlab.ait.ac.th
out_uri=sip:12345 at sip.interlab.ait.ac.th via_cnt==1"
Content-Length: 0



Message 3 from 203.159.32.39:5060 to 203.159.31.36:5060


SUBSCRIBE sip:12345 at sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250 at 203.159.32.39
CSeq: 2 SUBSCRIBE
To: <sip:12345 at sip.interlab.ait.ac.th>
Via: SIP/2.0/UDP
203.159.32.39:5060;branch=z9hG4bK991c906a283ca5d57e8856c98097e81c
Max-Forwards: 70
Allow: REGISTER,INVITE,BYE,ACK,CANCEL,SUBSCRIBE,NOTIFY,MESSAGE
User-Agent: IntERLab User Agent 1.0a
Event:  presence
Expires: 600
Accept: application/pidf+xml,application/xpidf+xml,application/xvcresource+xml
Contact: <sip:andrey at 203.159.32.39:5060>
Authorization: Digest
username="andrey",realm="sip.interlab.ait.ac.th",nonce="439ee222efefefbb8cbb78e75d6d15b723a1e1d0",uri="sip:12345 at sip.interlab.ait.ac.th",response="1c7fa7ceb1f654d0e2ea91c54823bb8d"
From: "Andrey Kuprianov" <sip:andrey at sip.interlab.ait.ac.th>;tag=15493888
Content-Length: 0



Message 4 from 203.159.32.39:5060 to 203.159.31.36:5060


SUBSCRIBE sip:12345 at sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250 at 203.159.32.39
CSeq: 2 SUBSCRIBE
To: <sip:12345 at sip.interlab.ait.ac.th>
Via: SIP/2.0/UDP
203.159.32.39:5060;branch=z9hG4bK991c906a283ca5d57e8856c98097e81c
Max-Forwards: 70
Allow: REGISTER,INVITE,BYE,ACK,CANCEL,SUBSCRIBE,NOTIFY,MESSAGE
User-Agent: IntERLab User Agent 1.0a
Event:  presence
Expires: 600
Accept: application/pidf+xml,application/xpidf+xml,application/xvcresource+xml
Contact: <sip:andrey at 203.159.32.39:5060>
Authorization: Digest
username="andrey",realm="sip.interlab.ait.ac.th",nonce="439ee222efefefbb8cbb78e75d6d15b723a1e1d0",uri="sip:12345 at sip.interlab.ait.ac.th",response="1c7fa7ceb1f654d0e2ea91c54823bb8d"
From: "Andrey Kuprianov" <sip:andrey at sip.interlab.ait.ac.th>;tag=15493888
Content-Length: 0



Message 5 from 203.159.32.39:5060 to 203.159.31.36:5060


SUBSCRIBE sip:12345 at sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250 at 203.159.32.39
CSeq: 2 SUBSCRIBE
To: <sip:12345 at sip.interlab.ait.ac.th>
Via: SIP/2.0/UDP
203.159.32.39:5060;branch=z9hG4bK991c906a283ca5d57e8856c98097e81c
Max-Forwards: 70
Allow: REGISTER,INVITE,BYE,ACK,CANCEL,SUBSCRIBE,NOTIFY,MESSAGE
User-Agent: IntERLab User Agent 1.0a
Event:  presence
Expires: 600
Accept: application/pidf+xml,application/xpidf+xml,application/xvcresource+xml
Contact: <sip:andrey at 203.159.32.39:5060>
Authorization: Digest
username="andrey",realm="sip.interlab.ait.ac.th",nonce="439ee222efefefbb8cbb78e75d6d15b723a1e1d0",uri="sip:12345 at sip.interlab.ait.ac.th",response="1c7fa7ceb1f654d0e2ea91c54823bb8d"
From: "Andrey Kuprianov" <sip:andrey at sip.interlab.ait.ac.th>;tag=15493888
Content-Length: 0

. . . . . .

And so it goes, until SER replies with Timeout.

Can you tell me what is wrong???

    Andrey.




More information about the sr-users mailing list