Dear Daniel:

When I was using the topos module, I found that if a bye message was sent from side B, kamailio would return a 404 message. When I remove the topos module, the call is normal, attached is sip pcap.

172.18.67.50:5060 and 172.18.67.40:55066  Are different ports monitored by the same kamailio

Looking forward to your reply!

 

 

 

My cfg is too long,I will key information for cfg:

 

modparam("ndb_redis", "server", "name=srv8;addr=127.0.0.1;port=6381;db=2")

modparam("topos", "storage", "redis")

modparam("topos", "db_url", "redis://127.0.0.1:6381/2")

modparam("topos_redis", "serverid", "srv8")

modparam("topos", "rr_update", 1)

/*……*/

request_route {

 

        xlog("L_DBG","request_route message: $mb\n");

 

        if (is_method("UPDATE")) {

                t_on_reply("UPDATE_SELF");

                #t_on_branch("UPDATE_OUT");       

        }

 

 

        # per request initial checks

        route(REQINIT);

 

        #!ifdef PBX_OUTMODE

        route(MESSAGE);

        #!endif

 

        # handle requests within SIP dialogs

        route(WITHINDLG);

 

        route(CANCEL);

        # route(CHECK_REG);

 

        route(REGISTER);

 

        if (is_method("OPTIONS")) {

                route(REPLAY_OPTIONS);

                exit;

        }

 

        t_check_trans();

 

        # /andle methods that don't make any sense in this environment

        if (!is_method("INVITE")) {

                xlog("L_INFO","Call $ci: Anomalous method $rm received from $si:$sp, relaying just in case\n");

                sl_reply_error();

                exit;

        }

        if(is_method("INVITE")){

                dlgs_init("$fu","$tu","FusionSBC");

                dlg_manage();

        }

        if ($rU==$null) {

                # request with no Username in RURI

                sl_send_reply("484","Address Incomplete");

                exit;

        }

 

        #From now on only INVITES

 

        #check if it's registered PBX user

        #!ifdef ASBCBROKER

                route(INVITE_PBX);

        #!else

                #!ifdef ASBC

                        route(INVITE_PBX);

                #!endif

        #!endif

 

        route(INVITE_AUTHENTICATE);

 

        route(GET_RG_INFO);

 

        route(GET_NUMBERS);

 

        route(SHOW_CALL_INFO);

 

        #Manipulate IN ANI (Number and NOA)

        route(ANI_MANIPULATION);

 

        #Manipulate IN DNIS

        route(DNIS_MANIPULATION);

 

        route(SDP);

 

        # record routing for dialog forming requests (in case they are routed)

        # - remove preloaded route headers

 

        xlog("L_DEBUG","Adding Record-Route header\n");

        # NVF changed this 4/22/2014 - why remove the incoming route headers?

        #remove_hf("Record-Route");

        record_route();

 

        route(ROUTING);

 

        route(SEND);

}

 

/*……*/

route[WITHINDLG] {

        if (has_totag()) {

        # sequential request withing a dialog should

        # take the path determined by record-routing

                xlog("L_INFO","yang yangyang testin to not here");

                if (loose_route()){

                        if(is_method("INFO")){

                                route("INFO_SELF");

                        }

 

                        route(BYE);

                        route(REINVITE);

                        route(ACK);

                        route(RELAY);

                } else {

                        if ( is_method("ACK")) {

                                if ( t_check_trans() ) {

                                # no loose-route, but stateful ACK;

                                # must be an ACK after a 487

                                # or e.g. 404            $var(obj) = $sht(call_objects=>$ci);

                                        xlog("L_INFO","Call $ci: ACK received in A-Leg, $fU@$si:$sp -----> $rU@$Ri:$Rp relaying downstreamrouteWITHINDLG\n");

                                        t_relay();

                                        exit;

                                } else {

                                # ACK without matching transaction ... ignore and discard

                                        exit;

                                }

                        }

                        xlog("L_INFO","yang in to not here");

                        sl_send_reply("404","Not here");

                }

                exit;

        }

}

 

 

 

 

发送自 Windows 10 邮件应用