[sr-dev] [dialog MI dlg_end_dlg] error when terminating a dialog in state 2 (never removed from memory)

Timo Reimann timo.reimann at 1und1.de
Mon Jul 12 14:13:20 CEST 2010


Hey,


Iñaki Baz Castillo wrote:
>>> Could you please perform the same experiment I've done in my first
>>> mail? I can reproduce it 100% of times.
>> Will do and report back as soon as I get to it.
> 
> Thanks a lot. BTW I'm using kamailio 1.5.4.

I was able to repeat your results with Kamailio 1.5 SVN: Whenever I
issue "dlg_end_dlg" on a call in the "early" state, it will never get
cleaned up.

The reason is that the reference counter isn't properly decremented.
Normal calls where no BYE message is forced correctly drop to zero
references and finally let the dialog module clean up the terminated
call. However, with dlg_end_dlg-enforced calls, the dialog drops no less
than one no matter how long you wait.

I know the error is somewhere within send_bye(), and I'm in the process
of closing in. Will report again once I find the right spot and probably
also provide a patch right away.

Oh, and by the way: Kamailio does deny sending out BYE requests for
calls not in the "confirmed" state as of now. However, this check is
done in the tm module called by the dialog module, and the latter passes
to the former a dialog state of DLG_CONFIRMED *always*. That is, it
doesn't respect the current dialog's state. I have no clue why but will
certainly consider using the real dialog state to work around the
module's current deficiencies.


Cheers,

--Timo



More information about the sr-dev mailing list