[Serusers] sip-communicator

Eduard San Anselmo Mateu esananselmo at albasoft.com
Tue Mar 2 11:08:24 CET 2004


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




More information about the sr-users mailing list