Re: [reSIProcate] onStaleCallTimeout() is never called after 100 Trying
Currently the StaleCallTimer is only started once we have a dialog (a 100 response does not form a dialog). The onStaleCallTimeout handler is part of the InviteSessionHandler, which requires an InviteSession object and thus a Dialog object. There is no DUM feature to have a timer running to timeout a call that never receives a dialog creating response. Currently applications are responsible for this kind of timeout logic.
Scott
On Sun, Jun 6, 2010 at 2:21 PM, Dmitry Semyonov
<dsemyonov@xxxxxxx> wrote:
Hi All.
I'm writing this message in a bit of rush. So, excuse me for possible mistake, and absence of proposed fix, (I'm not quite familiar with the code involved).
The situation is as follows: DUM sends INV, and receives 100 Trying. Then the remote side crashes. In this case onStaleCallTimeout() is never called.
(Moreover, eventually DUM hangs on shutdown due to this stale session, but the shutdown probem might actually be unrelated.)
I believe the following code (from DialogSet::dispatch()) is executed when 100 Trying is received:
if (response.header(h_StatusLine).statusCode() == 100)
{
if (mDum.mDialogSetHandler)
{
mDum.mDialogSetHandler->onTrying(mAppDialogSet->getHandle(), msg);
}
return;
}
And I think the problem is caused by the fact that handleProvisional() is never called in this situation, thus DumTimeout::StaleCall timer is never created.
Could anybody confirm my findings, and fix the problem if possible? TIA
--
...Bye..Dmitry.
_______________________________________________
resiprocate-devel mailing list
resiprocate-devel@xxxxxxxxxxxxxxx
https://list.resiprocate.org/mailman/listinfo/resiprocate-devel