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
版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用