[Serusers] Please, help with SUBSCRIBE timeouts

Vaclav Kubart vaclav.kubart at iptel.org
Wed Dec 14 08:00:34 CET 2005


Hello,
have you tried it without authorization? Any changes in behaviour?
The network dump is from the machine with SER or from the client? (Could 
you try do such dump on machine with SER on all interfaces including 
loopback?)
 	Vaclav

On Wed, 14 Dec 2005, Andrey Kouprianov wrote:

> 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.
>
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>




More information about the sr-users mailing list