[reSIProcate] Missed handling when caller hangup before receiving ANY response

kaiduan xie kaiduanx at yahoo.ca
Wed Sep 15 23:54:36 CDT 2004


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



More information about the resiprocate-devel mailing list