I’m using SER to shuttle calls between softswitches.  I have “softswitch A” sending calls to the SER proxy, which then does an enum lookup to make a routing decision and then passes the call on to the appropriate softswitch.  I have been having some strange problems with the setup and some questions about my config.  I sometimes get:

 

Nov 10 21:14:01 cpser ser[22087]: 483 Too many Hops

Nov 10 21:14:01 cpser ser[22087]: Warning: sl_send_reply: I won't send a reply for ACK!!

 

This mostly happens after I do a serctl restart to reload my config.  I assume that is because ACKs are coming in that the stateful transaction processor doesn’t know where to forward them to since I restarted?  There’s no other way to reload a config other than a full restart, correct?

 

Also I see a lot of “408 Request Timeout” from far end gateways.  Is there something wrong with my config?

 

Here is my config:

 

modparam("acc","radius_flag",1)

modparam("acc","failed_transactions",0)

modparam("tm", "fr_inv_timer", 5 )

 

route{

 

        if ( !mf_process_maxfwd_header("10") )

        {

                xlog("L_ERR","483 Too many Hops");

                sl_send_reply("483","Too Many Hops");

                drop();

        };

 

        if (msg:len >=  2048 ) {

                xlog("L_ERR","513 Message too Big");

                sl_send_reply("513", "Message too big");

                break;

        };

 

        setflag(1);

       

        if (loose_route())

        {

                t_relay();

                break;

        };

 

        if (method =="BYE")

        {

                if ( !t_relay())

                {

                        sl_reply_error();

                }

                break;

        };

 

        if (method =="CANCEL")

        {      

                if ( !t_relay())

                {

                        sl_reply_error();

                }

                break;

        };

 

        if (method =="ACK")

        {

                if ( !t_relay())

                {

                        sl_reply_error();

                }

                break;

        };

 

        if (method =="INVITE")

        {

 

                record_route();

                if (uri=~"^sip:[2-9]+@*")

                {

                        prefix("+");

 

                        if ( !enum_query("e164.internal.net"))

                        {

                                strip(1);

                                prefix("1");

                                rewritehost("192.168.10.5");

 

                                xlog("L_ERR","NANPA number to %tu from %fu carrier %ru\n");

 

                                t_on_failure("1");

                                t_relay();

 

                                break;

                        }

 

                        xlog("L_ERR","NANPA-ENUM number to %tu from %fu carrier %ru\n");

 

                        t_on_failure("1");

                        t_relay();

                };

       # end if block method = invite 

        }

}

 

failure_route[1]

{

        if(t_check_status("501|502|503|504|505|513"))

        {

                setflag(1);

                revert_uri();

                rewritehost("192.168.50.3");

                append_branch();

                xlog("L_ERR","FAIL-5XX number to %tu from %fu carrier %ru\n");

                t_relay();

        }

}