[sr-dev] possible bug on kemi dlg_ontimeout

Daniel-Constantin Mierla miconda at gmail.com
Thu Feb 13 17:13:13 CET 2020


Hello,

indeed keeping route block index in unsigned it can create problems. I
pushed a patch for it:

  -
https://github.com/kamailio/kamailio/commit/6c557efc1b9cb8c880a05235c94780bbaf305073

Can you try and see if now works ok? If yes, it will be backported.

Cheers,
Daniel


On 13.02.20 13:27, David Escartin wrote:
> Hello all
>
> Testing dialog timeout event callback for kemi lua setup on kamailio
> 5.4.0-dev3 (x86_64/linux) d74157-dirty, i had some problems to perform
> the dlg timeroute behaviour the same as we could on native version.
> If i used KSR.dialog.var_sets to set $dlg_ctx(timeout_route), I saw
> that on a dialog timeout, the dlg_ontimeout event route was not
> triggered, and only the dialog callback was executed with evname
> dialog:end. (only executing event_route -1 on state 5)
> So i'm guessing that the kemi dialog var_sets is for $dlg_var only (¿?)
> Anycase, If i used KSR.pv.sets, i saw the kamailio was crashing
> .....
> 16(5579) DEBUG: dialog [dlg_hash.c:1013]: dlg_ref_helper(): ref dlg
> 0x7f9a961f5f90 with 1 -> 3
> 16(5579) DEBUG: dialog [dlg_handlers.c:1589]: dlg_ontimeout():
> executing route -1 on timeout
> 22(5645) CRITICAL: <core> [core/pass_fd.c:277]: receive_fd(): EOF on 8
> 22(5645) DEBUG: <core> [core/tcp_main.c:3762]: handle_ser_child():
> dead child 16, pid 5579 (shutting down?)
> ....
> Adding some debug, i could see that the call was not attempting the
> kemi function of line 1598 of dlg_handlers.c, and was trying the code
> i think was for native on line 1593.
> We think the issue is that the toroute is defined as unsigned
> dlg_hash.h: unsigned int         toroute; /*!< index of route that is
> executed on timeout */
> but after that when setting $dlg_ctx(timeout_route) with pv module, it
> tries to compare an integer being unsigned, so it's always true and
> never uses kemi
> with this change we made it work
> +                               if ((int)(dlg->toroute) > 0) {
> +                               /*if(dlg->toroute>0) {*/
> but i don't know maybe there is a better way to do it.
>
> best regards
> david
>
> _______________________________________________
> Kamailio (SER) - Development Mailing List
> sr-dev at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio Advanced Training - March 9-11, 2020, Berlin - www.asipto.com
Kamailio World Conference - April 27-29, 2020, in Berlin -- www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-dev/attachments/20200213/c419db65/attachment.html>


More information about the sr-dev mailing list