< Previous by Date Date Index Next by Date >
  Thread Index Next in Thread >

[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