[reSIProcate] re-post: hangup before receiving any response
Hi, all,
This is a re-post of my last email for the case where
user hangup before receiving ANY response.
In transaction layer, after sending INVITE for 7
times, transaction layer will post a 408 to TU. In
DialogSet::dispatch() (#357)
switch (response.header(h_CSeq).method())
{
case INVITE:
case SUBSCRIBE:
case BYE:
case ACK:
if (response.header(h_To).exists(p_tag))
{
break; // dialog creating/handled by
dialog
}
else
{
// throw away, informational stauts
message eventually
return;
}
Since this 408 has no tag in To, the message is throw
away. So, we still need to put guard.destroy() in
DialogSet::cancel().
DialogSet::cancel()
{
if (mDialogs.empty())
{
if (mReceivedProvisional && getCreator())
{
....
}
else
{
//xkd to handle the case where user hangup
before receiving ANY response, including 100
guard.destroy();
return;
}
}
}
The scenario did happen while testing with Free World
Dialup.
kaiduan
______________________________________________________________________
Post your free ad now! http://personals.yahoo.ca