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

[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