[SR-Users] Kamailio routing BYE back to originator
Andrew White
andrew at uconnected.com.au
Mon Jun 24 05:20:13 CEST 2019
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 <andrew at uconnected.com.au> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20190624/0290d994/attachment.html>
More information about the sr-users
mailing list