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

Reply via email to