[Kamailio-Users] Kamailio 1.4.3 Carrierroute BYE does not

unknown at 1.org unknown at 1.org
Wed Feb 18 22:39:15 CET 2009


any ideas ?

Omar

On Tue, 2009-02-17 at 23:12 -0500, Ferdinandm wrote:
> Here is it Basic config for Kamailio 1.4.3
> 
> 
> ####### Global Parameters #########
> debug=9 # change this to 3
> log_stderror=yes
> fork=yes
> children=4
> 
> listen=udp:x.x.x.x:5060
> 
> ####### Modules Section ########
> 
> #set module path
> mpath="/opt/openser/lib64/kamailio/modules/"
> loadmodule "db_mysql.so"
> loadmodule "sl.so"
> loadmodule "tm.so"
> loadmodule "rr.so"
> loadmodule "maxfwd.so"
> loadmodule "textops.so"
> loadmodule "mi_fifo.so"
> #loadmodule "uri_db.so"
> loadmodule "uri.so"
> loadmodule "xlog.so"
> loadmodule "carrierroute.so"
> # ----------------- setting module-specific parameters ---------------
> 
> # ----- mi_fifo params -----
> modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
> 
> # ----- carrierroute params -----
> modparam("carrierroute", "db_url", "mysql://help:help@localhost/sip")
> modparam("carrierroute", "config_source", "db")
> 
> 
> ####### Routing Logic ########
> # main request routing logic
> 
> route{
>         if (!mf_process_maxfwd_header("10")) {
>                 sl_send_reply("483","Too Many Hops");
>                 exit;
>         };
> 
>         if (has_totag()) {
>                 # sequential request withing a dialog should
>                 # take the path determined by record-routing
>                 if (loose_route()) {
>     #                            if (is_method("BYE")) { 
>     # with or without BYE i have the same result
>     #                            if (t_check_trans())
>     #                            t_relay();
>     #				}
>                         route(10);
>                 } else {
>                         if ( is_method("ACK") ) {
>                                 if ( t_check_trans() ) {
>                                         # non loose-route, but stateful
> ACK; must be an ACK after a 487 or e.g. 404 from upstream server
>                                         t_relay();
>                                         exit;
>                                 } else {
>                                         # ACK without matching
> transaction ... ignore and discard.\n");
>                                         xlog("L_WARN", "[$mi] discarding
> ACK\n");
>                                         exit;
>                                 }
>                         }
>                         sl_send_reply("404","Not here");
>                 }
>                 exit;
>         }
> 
>         #initial requests
> 
>         # CANCEL processing
>         if (is_method("CANCEL")) {
>                 if (t_check_trans())
>                         t_relay();
>                 exit;
>         }
> 
>         t_check_trans();
> 
>         # record routing
>         if (!is_method("REGISTER|MESSAGE"))
>                 record_route();
> 
>         if (!uri==myself) {
>                 append_hf("P-hint: outbound\r\n");
>                 route(10);
>                 exit;
>         }
> 
>         # requests for my domain
> 
>         if ($rU==NULL) {
>                 # request with no Username in RURI
>                 sl_send_reply("484","Address Incomplete");
>                 exit;
>         }
> 
>         if (is_method("INVITE")) {
>                 if (cr_route("default", "3", "$rU", "$rU", "call_id")) {
>                         t_on_failure("1");
>                         route(10);
>                         exit;
>                 }
>                 exit;
>         }
> }
> 
> 
> route[10] {
>          cr_user_carrier("$fU", "$fd", "$avp(s:carrier)");
>         $avp(s:domain)="3";
>          if (!cr_route("$avp(s:carrier)", "$avp(s:domain)", "$rU",
> "$rU", "call_id")) {
>                 xlog("L_ERR", "cr_route failed\n");
>                 exit;
>          }
>         # if you store also the port as part of the rewrite host,
>         # otherwise you can just use $rd later
>         $avp(s:host)= $rd;
>         t_on_failure("1");
> #                xlog("method: $rm");
>                 if (!t_relay()) {
>                         sl_reply_error();
>         }
> }
> 
> 
> #onreply_route[2] {
> #        xlog("incoming reply\n");
> #}
> 
> failure_route[1] {
>         revert_uri();
>         if (!cr_next_domain("$avp(s:carrier)", "$avp(s:domain)", "$rU",
> "$avp(s:host)", "$T_reply_code", "$avp(s:domain)")) {
>                 xlog("L_ERR", "cr_next_domain failed\n");
>                 exit;
>         }
>         if (!cr_route("$avp(s:carrier)", "$avp(s:domain)", "$rU", "$rU",
> "call_id")) {
>                 xlog("L_ERR", "cr_route failed\n");
>                 exit;
>         }
> #        $avp(s:host)= $rd+":"+$rp;
>         $avp(s:host)= $rd;
>         t_on_failure("1");
>         append_branch();
>         if (!t_relay()) {
>                 xlog("L_ERR", "t_relay failed\n");
>                 exit;
>         }
> }
> 
> i am running solaris 10, 64 bits, then i really don't know if i should
> not try in this platform.
> 
> I somebody has a Working config as an example will be great.
> 
> but i still dont have the BYE, is not leaving the server, when i sniff
> the network.
> 
> the kamailio debug shows at least 4 times something like this :
> 
> bash-3.00# Feb 17 22:32:11 [15673] DBG:tm:utimer_routine: timer
> routine:7,tl=fffffffef0293738 next=0, timeout=44300000
> Feb 17 22:32:11 [15673] DBG:tm:retransmission_handler:
> retransmission_handler : request resending (t=fffffffef0293518, BYE
> sip:4 ... )
> Feb 17 22:32:11 [15673] DBG:tm:set_timer: relative timeout is 4000000
> Feb 17 22:32:11 [15673] DBG:tm:insert_timer_unsafe: [7]:
> fffffffef0293738 (48300000)
> Feb 17 22:32:11 [15673] DBG:tm:retransmission_handler:
> retransmission_handler : done
> 
> bash-3.00# Feb 17 22:32:16 [15673] DBG:tm:utimer_routine: timer
> routine:7,tl=fffffffef0293738 next=0, timeout=48300000
> Feb 17 22:32:16 [15673] DBG:tm:retransmission_handler:
> retransmission_handler : request resending (t=fffffffef0293518, BYE
> sip:4 ... )
> Feb 17 22:32:16 [15673] DBG:tm:set_timer: relative timeout is 4000000
> Feb 17 22:32:16 [15673] DBG:tm:insert_timer_unsafe: [7]:
> fffffffef0293738 (52300000)
> Feb 17 22:32:16 [15673] DBG:tm:retransmission_handler:
> retransmission_handler : done
> 
> thanks
> 
> F
> 
> 
> On Tue, 2009-02-17 at 18:48 +0100, Henning Westerholt wrote:
> > On Tuesday 17 February 2009, Omar wrote:
> > > i did
> > >
> > > there is no bye leaving from the kamailio at all
> > >
> > > the config is i stated before but now without the exit in the BYE
> > > condition.
> > >
> > > kamailio saves the bye when the bye comes from the B side, yes
> > > but it does not send anything back to the Originator GW, as it should.
> > > i made the captures and nothing. Kamailio receives and process the bye
> > > for CDR, but it does not send the BYE to the originator. i captured in
> > > the port 5060 and nothing comes.
> > >
> > > it is maybe a bug.?
> > 
> > Hi Omar,
> > 
> > it could be a bug, a misconfiguration, or a user agent which does not act 
> > according the standard. Does the BYE reach your forwarding/ t_relay statement 
> > in your config, you can check with xlog as well. This gives you the method of 
> > the SIP message you actually proceed in the config, just add this before the 
> > forwarding statement.
> > 
> > xlog("method: $rm");
> > 
> > Cheers,
> > 
> > Henning





More information about the sr-users mailing list