[Serusers] Not getting ACK to Mysql when calling SIP to PSTN

Pablo Bertuzzi pablob at ccdcom.net
Sat Jun 25 20:02:51 CEST 2005


Hello, i am runing ser 0.10.99-dev8 and 0.8.14 on a
different machine.
When calling from a sip device (Linksys RT31P2) to
PSTN (Cisco 5300), the ACK message is not logged to
mysql. Only INVITEs (without 200 status) and BYEs are
logged.

The other scenarios sip to sip and pstn to sip, log
all the messages i need. (INVITE 200, ACK and BYE)

I am sure there is something missing in ser.cfg.

Any clue on what i am doing wrong??

Kind regards, Pablo.


# ------------------ module loading ----------------------------------


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/acc.so"

# ----------------- setting module-specific parameters ---------------

# -- usrloc params --
modparam("usrloc", "db_mode", 2)

# -- auth params --
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")

# -- rr params --
modparam("rr", "enable_full_lr", 1)

# -- acc params --
modparam("acc", "db_flag", 1)
modparam("acc", "report_cancels", 1)
modparam("acc", "report_ack", 1)

# -------------------------  request routing logic -------------------

# main routing logic

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;
        };

        # we record-route all messages -- to make sure that
        # subsequent messages will go through our proxy; that's
        # particularly good if upstream and downstream entities
        # use different transport protocol
        if (!method=="REGISTER") record_route();

        # subsequent messages withing a dialog should take the
        # path determined by record-routing


        if (method=="INVITE" || method=="BYE" || method=="ACK") {
                setflag(1);
        };

        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 (src_ip==66.100.100.70 and method=="INVITE") { ## Calls from PSTN
                        forward(uri:host, uri:port);              ##
                        break;                                    ##
                };


               
                if (method=="REGISTER") {

# Uncomment this if you want to use digest authentication
                        if (!www_authorize("66.100.100.73", "subscriber")) {
                                www_challenge("66.100.100.73", "0");
                                break;
                        };

                        save("location");
                        break;
                };

                if (method=="INVITE" || method=="BYE" || method=="CANCEL" || method=="ACK") {
                        setflag(1);
                        acc_db_request("", "acc");
                };




                if (uri=~"^sip:1786[0-9]*@66.100.100.73") {        
                        prefix("5000#");                           
                        rewritehostport("66.100.100.70:5060");     
                        forward(uri:host, uri:port);               
                        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;
                };
        };
        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();
        };
}






More information about the sr-users mailing list