Hi all, I’ve done some digging and realised that outbound calls I initiate Asterisk -> Kamailio -> Trunk are receiving the BYE correctly. However the previously provided flow was Drachtio -> Kamailio -> Trunk.
I suspect the dialog is not being initialised correctly in some way from Drachtio. I can make changes as required here, but I need help spotting the difference between the two. I ran a kamcmd dlg.list on a test call Asterisk -> Kamailio -> Trunk, and another one on Drachtio -> Kamailio -> Trunk, here are the results (with IPs anonymised and replaced with pseudo hostnames): Asterisk -> Kamailio -> Trunk: https://pastebin.com/WkFefUGB <https://pastebin.com/WkFefUGB> Drachtio -> Kamailio -> Trunk: https://pastebin.com/G3bzNYY0 <https://pastebin.com/aX5hdqUE> I don’t know the inner workings of Kamailio dialogs well, but these look very similar to me. Am I on the right track here, is there other debug information I can dump to compare what’s happening and why this BYE its going to the wrong end? Thanks, Andrew > On 23 Jun 2019, at 5:39 pm, Andrew White <[email protected]> wrote: > > Hi team! > > I’ve recently found an issue in my Kamailio setup. It appears when the trunk > replies to call in progress with a BYE, we relay it immediately back to them: > > https://i.imgur.com/h5fusau.png <https://i.imgur.com/h5fusau.png> > > The only differences in the second BYE is the Route header is removed and > replaced with a Via header referencing the Kamailio machine, and the From URI > is rewritten to show the Kamailio hostname. > > > I’m unsure what steps I can take here, as all of my out of dialog messages > (180, 200, ACK) are forwarded along with no issue. It seems only the in > dialog are having this issue. > > Here’s my WITHINDLG and RELAY: > > def ksr_route_relay() > if KSR.is_method_in("IBSU") then > if KSR::TM.t_is_set("branch_route") < 0 then > KSR::TM.t_on_branch("ksr_branch_manage") > end > end > if KSR.is_method_in("ISU") then > if KSR::TM.t_is_set("onreply_route") < 0 then > KSR::TM.t_on_reply("ksr_onreply_manage") > end > #KSR.info <http://ksr.info/>("Onreply route: > #{KSR::TM.t_is_set("onreply_route")}") > end > > if KSR.is_INVITE() then > if KSR::TM.t_is_set("failure_route") < 0 then > KSR::TM.t_on_failure("ksr_failure_manage") > end > end > > if KSR::TM.t_relay() < 0 then > KSR::SL.sl_reply_error() > end > exit > end > > def ksr_route_withindlg() > return if KSR::SIPUTILS.has_totag() < 0 > > if KSR::RR.loose_route() > 0 then > ksr_route_dlguri() > if KSR.is_BYE() then > #KSR.setflag($myenv['FLT_ACC'].to_i) > #KSR.setflag($myenv['FLT_ACCFAILED'].to_i) > elsif KSR.is_ACK() then > ksr_route_natmanage() > elsif KSR.is_NOTIFY() then > KSR::RR.record_route() > end > ksr_route_relay() > exit > end > > if KSR.is_ACK() then > #KSR.info <http://ksr.info/>("Handling an ACK within dialog") > if KSR::TM.t_check_trans() > 0 then > ksr_route_relay() > exit > else > exit > end > end > #KSR.info <http://ksr.info/>("404ing within dialog") > KSR::SL.sl_send_reply(404, "Not here"); > exit > end > > I suspect I must be sending this to the wrong branch somehow, but I’m unsure > how to correct this. The call gets originally initiated from Kamailio writing > a custom RURI and To header before calling t_relay(). I’m wondering if I’m > somehow initiating the dialog incorrectly and as such the BYE doesn’t know > where to go. > > Thanks! > > Andrew >
_______________________________________________ Kamailio (SER) - Users Mailing List [email protected] https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
