[sr-dev] crash on dlg_clean_run
Daniel-Constantin Mierla
miconda at gmail.com
Fri Sep 26 09:10:26 CEST 2014
Good spot, a typo/copy&paste oversight ... going to push the patch.
Cheers,
Daniel
On 25/09/14 23:57, Alex Balashov wrote:
> In this loop...
>
> int dlg_clean_run(ticks_t ti)
> {
> unsigned int i;
> unsigned int tm;
> dlg_cell_t *dlg;
> dlg_cell_t *tdlg;
>
> tm = (unsigned int)time(NULL);
> for(i=0; i<d_table->size; i++)
> {
> lock_set_get(d_table->locks,
> d_table->entries[i].lock_idx);
> dlg = d_table->entries[i].first;
> while (dlg) {
> tdlg = dlg;
> dlg = dlg->next;
> if(tdlg->state==DLG_STATE_UNCONFIRMED &&
> tdlg->init_ts<tm-300) {
> /* dialog in early state older than
> 5min */
> LM_NOTICE("dialog in early state is
> too old (%p ref %d)\n",
> tdlg, tdlg->ref);
> unlink_unsafe_dlg(&d_table->entries[i], tdlg);
> destroy_dlg(tdlg);
> }
> if(tdlg->state==DLG_STATE_CONFIRMED_NA &&
> tdlg->start_ts<tm-60) {
> if(update_dlg_timer(&dlg->tl, 10)<0) {
> LM_ERR("failed to update
> dialog lifetime in long non-ack state\n");
> }
> dlg->lifetime = 10;
> dlg->dflags |= DLG_FLAG_CHANGED;
> }
> }
>
> Should we, perhaps, in that last conditional block
> (if(tdlg->state==DLG_STATE_CONFIRMED_NA && tdlg->start_ts<tm-60)), be
> operating on 'tdlg' rather than 'dlg', much as in the previous if
> block? Is that a typo/oversight/mistake/legacy code?
>
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
More information about the sr-dev
mailing list