Hello World!
Kamailio 5.5 in use.
I wonder, how I could prevent this issue.
modparam("dialog", "send_bye", 1) modparam("dialog", "default_timeout", 21600)
in the corresponding route: $dlg_ctx(timeout_route) = "DIALOG_TIMEOUT"; dlg_manage();
Dialog starts on Node01 and it's variables, status and timer are DMQ synced to Node02
As both nodes have the same information, I guess both arm the timeout trigger and sometimes the wrong node is more trigger friendly.
If dlg_ontimeout() is triggered on Node02 then:
* No Bye is send, as Node02 is not handling that Dialog. * Dialog is removed from Memory on Node02 and state synced back to Node01 * Dialog is removed from Memory on Node01 too, but NOT from database [*1] * Dialog CDR is never commited on Node01 * Call is never sent to timeout_route
And subsequent in dialog messages on Node01 result in:
dlg_onroute(): unable to find dialog
Did I misconfigure something?
Is there a way to make sure the timer is NOT triggered on the node not handling the dialogue?
Shall I try by setting the default_timeout and then use a timeout_avp to set that timeout slightly lower AFTER the dialog has started? Or would this be synced to the other node too?
I found out, session timer changes are not synced after an initial timer was synced, so you can not extend the session timer after setting a initial timeout. So maybe this is also true for dialog timeout?
[*1] this also explains why upon restarting kamailio, the dialog suddenly is back and after timing out again, a CDR is then written with a way too long duration.