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@sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250(a)203.159.32.39
CSeq: 1 SUBSCRIBE
From: "Andrey Kuprianov"
<sip:andrey@sip.interlab.ait.ac.th>;tag=15493888
To: <sip:12345@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@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(a)203.159.32.39
CSeq: 1 SUBSCRIBE
From: "Andrey Kuprianov"
<sip:andrey@sip.interlab.ait.ac.th>;tag=15493888
To: <sip:12345@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@sip.interlab.ait.ac.th
out_uri=sip:12345@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@sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250(a)203.159.32.39
CSeq: 2 SUBSCRIBE
To: <sip:12345@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@203.159.32.39:5060>
Authorization: Digest
username="andrey",realm="sip.interlab.ait.ac.th",nonce="439ee222efefefbb8cbb78e75d6d15b723a1e1d0",uri="sip:12345@sip.interlab.ait.ac.th",response="1c7fa7ceb1f654d0e2ea91c54823bb8d"
From: "Andrey Kuprianov"
<sip:andrey@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@sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250(a)203.159.32.39
CSeq: 2 SUBSCRIBE
To: <sip:12345@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@203.159.32.39:5060>
Authorization: Digest
username="andrey",realm="sip.interlab.ait.ac.th",nonce="439ee222efefefbb8cbb78e75d6d15b723a1e1d0",uri="sip:12345@sip.interlab.ait.ac.th",response="1c7fa7ceb1f654d0e2ea91c54823bb8d"
From: "Andrey Kuprianov"
<sip:andrey@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@sip.interlab.ait.ac.th SIP/2.0
Call-ID: 7762edc6f3954c87c8b95a0270653250(a)203.159.32.39
CSeq: 2 SUBSCRIBE
To: <sip:12345@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@203.159.32.39:5060>
Authorization: Digest
username="andrey",realm="sip.interlab.ait.ac.th",nonce="439ee222efefefbb8cbb78e75d6d15b723a1e1d0",uri="sip:12345@sip.interlab.ait.ac.th",response="1c7fa7ceb1f654d0e2ea91c54823bb8d"
From: "Andrey Kuprianov"
<sip:andrey@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(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers