Hello everyone.
I'm testing SER with some different clients, to see which one fits our needs better. The last one we tried was sip-communicator (java softphone), but I'm experiencing some problems with it. At first, everything seems to work well, but after a few seconds, the client says it's unregistered (when that's not true). Another issue is that when SER returns the 200 OK response to the REGISTER request, it has three different Contact headers, with different port numbers. The config file is this one:
listen=192.168.0.15 alias=albasoft.com alias=albasoft.com:5060 alias=192.168.0.15 #alias=192.168.20.15 #alias=192.168.20.15:*
#alias=192.168.20.15
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so" loadmodule "/usr/lib/ser/modules/textops.so" loadmodule "/usr/lib/ser/modules/nathelper.so"
modparam("usrloc", "db_mode", 2) modparam("rr", "enable_full_lr", 1)
route{
# 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"); break; }; if (msg:len >= max_len ) { sl_send_reply("513", "Message too big"); break; };
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 the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication # if (!www_authorize("iptel.org", "subscriber")) { # www_challenge("iptel.org", "0"); # break; # }; force_rport(); save("location"); break; };
lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); break; };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; if (method=="INVITE" && !uri=~"sip:.*@192.168.0..*") { log(1,"IEEE: la peticio va cap a fora\n"); #fix_nated_sdp("1"); #force_rtp_proxy(); #t_on_reply("1"); }; }; 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(); }; }
onreply_route[1] { if (status =~ "(183)|2[0-9][0-9]") { if (!src_ip=~"192.168.0..*") { log(1,"onreply_route si que funciona\n"); #force_rtp_proxy(); }; }; }
By the way, sip-communicator doesn't seem to be symmetric: the clients works on a random port, and the server, on 5060 (configurable), and those different Contact headres I've explained, are for 5060, and the three ports following the one sip-communicator has made the request from (for example, 1066, 1067, 1068).
Thanks in advance.
Eduard San Anselmo
The 200 OK to the REGISTER must have as many Contacts as currently registered at the proxy. So if you register and restart the client (without de-register), there will be 2 bindings (2 contacts) - the new one and the old. The old one will expires after some time as it will not be renewed.
klaus
Eduard San Anselmo Mateu wrote:
Hello everyone.
I'm testing SER with some different clients, to see which one fits our needs better. The last one we tried was sip-communicator (java softphone), but I'm experiencing some problems with it. At first, everything seems to work well, but after a few seconds, the client says it's unregistered (when that's not true). Another issue is that when SER returns the 200 OK response to the REGISTER request, it has three different Contact headers, with different port numbers. The config file is this one:
listen=192.168.0.15 alias=albasoft.com alias=albasoft.com:5060 alias=192.168.0.15 #alias=192.168.20.15 #alias=192.168.20.15:*
#alias=192.168.20.15
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so" loadmodule "/usr/lib/ser/modules/textops.so" loadmodule "/usr/lib/ser/modules/nathelper.so"
modparam("usrloc", "db_mode", 2) modparam("rr", "enable_full_lr", 1)
route{
# 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"); break; }; if (msg:len >= max_len ) { sl_send_reply("513", "Message too big"); break; }; 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 the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) { if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication # if (!www_authorize("iptel.org", "subscriber")) { # www_challenge("iptel.org", "0"); # break; # }; force_rport(); save("location"); break; };
lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); break; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; if (method=="INVITE" && !uri=~"sip:.*@192\.168\.0\..*") { log(1,"IEEE: la peticio va cap a fora\n"); #fix_nated_sdp("1"); #force_rtp_proxy(); #t_on_reply("1"); }; }; 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(); }; }
onreply_route[1] { if (status =~ "(183)|2[0-9][0-9]") { if (!src_ip=~"192.168.0..*") { log(1,"onreply_route si que funciona\n"); #force_rtp_proxy(); }; }; }
By the way, sip-communicator doesn't seem to be symmetric: the clients works on a random port, and the server, on 5060 (configurable), and those different Contact headres I've explained, are for 5060, and the three ports following the one sip-communicator has made the request from (for example, 1066, 1067, 1068).
Thanks in advance.
Eduard San Anselmo
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Thanks for your help, Klaus.
The thing is that sip-communicator indeed realises it is registered for a few seconds, and the it thinks it's unregistered again, and that's what upsets me, because it tries to re-register again.
What I was trying to know is if someone has experienced similar problems with sip-communicator, or if it is only me who's doing something wrong. You know, SER seems to be working fine: it gets a REGISTER request, and it responds with an OK (but it shouldn't be getting a second one from the same source!!!).
Again, tahnks for your help (and patience).
Mensaje citado por Klaus Darilion klaus.mailinglists@pernau.at:
The 200 OK to the REGISTER must have as many Contacts as currently registered at the proxy. So if you register and restart the client (without de-register), there will be 2 bindings (2 contacts) - the new one and the old. The old one will expires after some time as it will not be renewed.
klaus
Eduard San Anselmo Mateu wrote:
Hello everyone.
I'm testing SER with some different clients, to see which one fits our
needs
better. The last one we tried was sip-communicator (java softphone), but
I'm
experiencing some problems with it. At first, everything seems to work
well, but
after a few seconds, the client says it's unregistered (when that's not
true).
Another issue is that when SER returns the 200 OK response to the REGISTER request, it has three different Contact headers, with different port
numbers.
The config file is this one:
listen=192.168.0.15 alias=albasoft.com alias=albasoft.com:5060 alias=192.168.0.15 #alias=192.168.20.15 #alias=192.168.20.15:*
#alias=192.168.20.15
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so" loadmodule "/usr/lib/ser/modules/textops.so" loadmodule "/usr/lib/ser/modules/nathelper.so"
modparam("usrloc", "db_mode", 2) modparam("rr", "enable_full_lr", 1)
route{
# 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"); break; }; if (msg:len >= max_len ) { sl_send_reply("513", "Message too big"); break; };
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 the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication # if (!www_authorize("iptel.org", "subscriber")) { # www_challenge("iptel.org", "0"); # break; # }; force_rport(); save("location"); break; };
lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); break; };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; if (method=="INVITE" && !uri=~"sip:.*@192\.168\.0\..*") { log(1,"IEEE: la peticio va cap a fora\n"); #fix_nated_sdp("1"); #force_rtp_proxy(); #t_on_reply("1"); }; }; 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(); }; }
onreply_route[1] { if (status =~ "(183)|2[0-9][0-9]") { if (!src_ip=~"192.168.0..*") { log(1,"onreply_route si que funciona\n"); #force_rtp_proxy(); }; }; }
By the way, sip-communicator doesn't seem to be symmetric: the clients
works on
a random port, and the server, on 5060 (configurable), and those different Contact headres I've explained, are for 5060, and the three ports following
the
one sip-communicator has made the request from (for example, 1066, 1067,
1068).
Thanks in advance.
Eduard San Anselmo
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Eduard San Anselmo