[sr-dev] [tracker] Task opened: Dialog bugs

sip-router bugtracker at sip-router.org
Wed Apr 3 13:01:25 CEST 2013


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.



More information about the sr-dev mailing list