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