diff --git a/src/modules/dialog/dialog.c b/src/modules/dialog/dialog.c index 9f90e07a0b2..37b5dedde7d 100644 --- a/src/modules/dialog/dialog.c +++ b/src/modules/dialog/dialog.c @@ -107,6 +107,8 @@ int dlg_wait_ack = 1; static int dlg_timer_procs = 0; static int _dlg_track_cseq_updates = 0; int dlg_ka_failed_limit = 1; +int dlg_early_timeout = 300; +int dlg_noack_timeout = 60; int dlg_enable_dmq = 0; @@ -301,7 +303,9 @@ static param_export_t mod_params[]={ { "db_skip_load", INT_PARAM, &db_skip_load }, { "ka_failed_limit", INT_PARAM, &dlg_ka_failed_limit }, { "enable_dmq", INT_PARAM, &dlg_enable_dmq }, - {"event_callback", PARAM_STR, &dlg_event_callback }, + { "event_callback", PARAM_STR, &dlg_event_callback }, + { "early_timeout", PARAM_INT, &dlg_early_timeout }, + { "noack_timeout", PARAM_INT, &dlg_noack_timeout }, { 0,0,0 } }; diff --git a/src/modules/dialog/dlg_hash.c b/src/modules/dialog/dlg_hash.c index 8c5c7a6acb2..e9b0af65ea9 100644 --- a/src/modules/dialog/dlg_hash.c +++ b/src/modules/dialog/dlg_hash.c @@ -48,6 +48,9 @@ extern int dlg_ka_interval; extern int dlg_enable_dmq; +extern int dlg_early_timeout; +extern int dlg_noack_timeout; + /*! global dialog table */ struct dlg_table *d_table = 0; @@ -229,14 +232,16 @@ int dlg_clean_run(ticks_t ti) while (dlg) { tdlg = dlg; dlg = dlg->next; - if(tdlg->state==DLG_STATE_UNCONFIRMED && tdlg->init_tsstate==DLG_STATE_UNCONFIRMED + && tdlg->init_tsref); unlink_unsafe_dlg(&d_table->entries[i], tdlg); destroy_dlg(tdlg); } - if(tdlg->state==DLG_STATE_CONFIRMED_NA && tdlg->start_tsstate==DLG_STATE_CONFIRMED_NA + && tdlg->start_tstl, 10)<0) { LM_ERR("failed to update dialog lifetime in long non-ack state\n"); }