[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 Users
mailing list