THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
A new Flyspray task has been opened. Details are below.
User who did this - Eduardo Lejarreta (lejarreta.e)
Attached to Project - sip-router
Summary - Dialog bugs
Task Type - Bug Report
Category - dialog
Status - Unconfirmed
Assigned To -
Operating System - Linux
Severity - Medium
Priority - Normal
Reported Version - 3.2
Due in Version - Undecided
Due Date - Undecided
Details - Good morning.
I think I've found 2 bugs and 1 improvement. Please correct me if I'm wrong.
1.- Having for instance "modparam("dialog", "default_timeout",
10800)" -> after a "kamctl restart" no timeout was triggered
On "dlg_db_handler.c" -> on "load_dialog_info_from_db" function we
should change this:
""""""""""""""""""""
...
dlg->tl.timeout = (unsigned int)(VAL_INT(values+9)) + get_ticks();
if (dlg->tl.timeout<=(unsigned int)time(0))
dlg->tl.timeout = 0;
else
dlg->tl.timeout -= (unsigned int)time(0);
dlg->lifetime = dlg->tl.timeout - get_ticks(); --------------->(NEW)
GET_STR_VALUE(cseq1, values, 10 , 1, 1);
GET_STR_VALUE(cseq2, values, 11 , 1, 1);
GET_STR_VALUE(rroute1, values, 12, 0, 0);
GET_STR_VALUE(rroute2, values, 13, 0, 0);
GET_STR_VALUE(contact1, values, 14, 1, 1);
GET_STR_VALUE(contact2, values, 15, 1, 1);
...
if (0 != insert_dlg_timer( &(dlg->tl), dlg->lifetime )) { ...
--------------->(CORRECT)
...
//dlg->lifetime = 0; ---------------> (no sense on this)
dlg->dflags = 0;
dlg->dflags |= DLG_FLAG_TOBYE; --------------->(IMPROVEMENT: DLG_FLAG_TOBYE should
be also saved in any way on DB. After a "kamctl restart" we loose this
contextual flag. As for us it's very important we've forced on code.)
...
""""""""""""""""""""
instead of
""""""""""""""""""""
...
dlg->tl.timeout = (unsigned int)(VAL_INT(values+9)) + get_ticks();
if (dlg->tl.timeout<=(unsigned int)time(0))
dlg->tl.timeout = 0;
else
dlg->tl.timeout -= (unsigned int)time(0);
GET_STR_VALUE(cseq1, values, 10 , 1, 1);
GET_STR_VALUE(cseq2, values, 11 , 1, 1);
GET_STR_VALUE(rroute1, values, 12, 0, 0);
GET_STR_VALUE(rroute2, values, 13, 0, 0);
GET_STR_VALUE(contact1, values, 14, 1, 1);
GET_STR_VALUE(contact2, values, 15, 1, 1);
...
if (0 != insert_dlg_timer( &(dlg->tl), (int)dlg->tl.timeout )) { ... "
--------------->(INCORRECT)
...
dlg->lifetime = 0;
dlg->dflags = 0;
...
""""""""""""""""""""
2.- In this scenario, if a RE-INVITE was received by Kamailio after restart, the call was
dropped automatically (the timeout left was ignored).
On "dlg_handlers.c" -> on "dlg_onroute" function we should change
this:
""""""""""""""""""""
...
timeout = get_dlg_timeout(req);
dlg->lifetime = timeout;
...
""""""""""""""""""""
--------------->(CORRECT)
instead of
""""""""""""""""""""
...
timeout = get_dlg_timeout(req);
if (timeout!=default_timeout) {
dlg->lifetime = timeout;
}
...
""""""""""""""""""""
--------------->(INCORRECT)
As always, only for helping purpose not to bother anyone.
Thanks and best regards.
Eduardo Lejarreta.
More information can be found at the following URL:
http://sip-router.org/tracker/index.php?do=details&task_id=282
You are receiving this message because you have requested it from the Flyspray bugtracking
system. If you did not expect this message or don't want to receive mails in future,
you can change your notification settings at the URL shown above.