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应用