[Users] openser sending 408 to UAC when not receiving 200 from UAS after 4 secs

Tim Madorma tmadorma at gmail.com
Wed Jun 13 18:36:42 CEST 2007


Hi,

For a basic call, when the UAS does not send a 200 within approx 4
seconds, the OpenSER has a timer fire and sends a 408 to the UAC and a
Cancel to the UAS. This only allows one ring on the terminating phone
before the call is dropped.. I'm attaching the log and Wireshark/snoop
capture file. I'll put the openser config file inline here. Please
advise:

#
#  openser_vm.cfg
#
# ----------- global configuration parameters ------------------------

debug=3            # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no    # (cmd line: -E)

maxbuffer=1048576

check_via=no    # (cmd. line: -v)
dns=no          # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
#reply_to_via=1
children=32
log_facility=LOG_LOCAL5
dns_use_search_list=no
dns_servers_no=1
user="sipproxy"
group="sipproxy"

# Local IP address/port pairs to listen to
# Set the following IP addresses to the value of the local e1000g0 interface
listen=udp:65.185.233.55:5061
listen=udp:65.185.233.55:5062

# Alias IP address/port pair values will be in the Req URI when the
# OpenSER is being load balanced with a BIG IP server
# Set the IP address to the value of the associated blade
# of the BIG IP that is load balancing for the SIP Proxy server.
alias=65.185.233.104:5061
alias=65.185.233.104:5062

# LOAD OpenSER MODULES
mpath="/sw/lib/openser/modules/"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "acc.so"
loadmodule "mi_fifo.so"
loadmodule "enum.so"
loadmodule "perl.so"
loadmodule "xlog.so"

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

# -- usrloc params --

modparam("usrloc", "db_mode",   0)

# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)

# -------------------------  request routing logic -------------------
modparam("acc", "log_level", 2)
modparam("acc", "log_flag", 1)
modparam("acc","report_cancels", 1)
modparam("acc","failed_transaction_flag", 1)
modparam("acc","log_extra", "req_uri=$rU")
modparam("tm", "fr_timer", 2)
modparam("tm","fr_inv_timer",4)
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
modparam("perl", "filename",
"/sw/lib/openser/perl/openser_twc_sip_proxy_3.0.pl")

# 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");
                exit;
        };

        if (msg:len >=  2048 ) {
                sl_send_reply("513", "Message too big");
                exit;
        };

        # 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 (loose_route()) {
                # mark routing logic in request
                append_hf("P-hint: rr-enforced\r\n");
                route(1);
        };

        if (!uri==myself) {
                route(1);
        };

        if (method=="OPTIONS") {
            sl_send_reply("200", "OK");
            exit;
        }

        ##############################################################
        # TWC: dst_port 5062 indicates Message Waiting Indicator
        ##############################################################
        if (dst_port==5062 && method=="NOTIFY") {

            xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n");
            perl_exec("twc_proc_vm_mwi");

            if ($rc==-1) {
              log("TWC: COULD NOT PARSE THE MWI TRIGGER");
              sl_send_reply("400", "Bad Request");
              exit;
            }

            # The enum_query() call will form an ENUM (NAPTR DNS) request from
            # the user part of the Req URI and the passed MWI server and send
            # it to the ENUM server defined in resolv.conf.
            enum_query("mwi.ex.e164.rr.com");
            if ($rc==1) {
              log("MWI ENUM QUERY SUCCEEDED");
               setflag(1);
               route(1);
            } else {
              log("MWI ENUM QUERY FAILED");
              sl_send_reply("404", "Not Found");
              exit;
            }
        }

        ##############################################################
        # TWC: dst_port 5061 indicates VM Outbound dial trigger
        ##############################################################
        if (dst_port==5061 && method=="INVITE") {

            xlog("L_DBG", "TWC: received incoming message:\n <$mb>\n");
            perl_exec("twc_proc_vm_outdial");

            if ($rc==-1) {
              log("TWC: COULD NOT PARSE THE VM OUTDIAL TRIGGER");
              sl_send_reply("400", "Bad Request");
              exit;
            }

            # The enum_query() call will form an ENUM (NAPTR DNS) request from
            # the user part of the Req URI and the passed VMO server and send
            # it to the ENUM server defined in resolv.conf.
            enum_query("vmo.ex.e164.rr.com");
            if ($rc==1) {
               log("VMO ENUM QUERY SUCCEEDED");
               setflag(1);
               # Use pseudo vars to set REQ URI User to the original
Req URI User
               $rU = $oU;
               route(1);
            } else {
               log("ENUM QUERY FAILED");
               sl_send_reply("404", "Not Found");
               exit;
            }
        }
}


#####################################################
# Default Message Handler
#####################################################
route[1] {

        # Send it out now; use stateful forwarding as it works reliably
        # even for UDP2TCP
        if (!t_relay()) {
                sl_reply_error();
        };
        exit;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: outdial.408.zip
Type: application/zip
Size: 7126 bytes
Desc: not available
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20070613/5ce79ce9/attachment.zip>


More information about the sr-users mailing list