[reSIProcate] Missed handling when caller hangup before receiving ANY response
Hi, all,
In the DialogSet::cancel(), the handling when caller
hangup before receiving ANY response, including 100 is
missed. Applicaiton call AppDialogSet::cancel() to
hangup.
void
DialogSet::cancel()
{
Destroyer::Guard guard(mDestroyer);
mCancelled = true;
if (mDialogs.empty())
{
if (mReceivedProvisional && getCreator())
{
//unify makeCancel w/ Dialog makeCancel,
verify both
//exception to cancel UAS DialogSet?
auto_ptr<SipMessage>
cancel(Helper::makeCancel(getCreator()->getLastRequest()));
mDum.send(*cancel);
guard.destroy();
return;
}
else
{
// xkd-2004-9-15 to handle the case the user
hangup before receiving ANY response, including 100.
guard.destroy();
^^^^^^^^^^^^^^^
return;
}
}
....
}
I simulated this case by commenting out
mReceivedProvisional = true;
in DialogSet::dispatch()(line 337)
and test with Free World Dialup and Jasomi's outbound
proxy.
kaiduan
______________________________________________________________________
Post your free ad now! http://personals.yahoo.ca