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

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


For case 1, mAppDialog is set to 0 in Dialog::Dialog.  Are you allocating an
AppDialog as a stack variable?

As for the early destruction when the BYE is sent, I don't really have a
strong opinion on that.  Right now the onTerminated call conveys how
the-Dialog ended; BYE-200 vs BYE-408.

--Derek

> -----Original Message-----
> From: resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:resiprocate-
> devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of kaiduan xie
> Sent: Thursday, September 16, 2004 10:00 AM
> To: Scott Godin; resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> Subject: RE: [reSIProcate] Missed handling when caller hangup before
> receiving ANY response
> 
> Scott,
> 
> Actually there are two cases:
> 
> case 1) after hangup, SIP messages are received from
> the network. In this case, the created DialogSet,
> Dialog, InvitationSessionCreator will be freed in
> Dialog->cancel(). But there is still one small bug, in
> Dialog::~Dialog()
> 
> Dialog::~Dialog()
> {
> ...
>     delete mAppDialog;
> ...
> }
> 
> If mAppDialog is not allocated from the heap, this
> will crash the program. So I suggest to add mAppDialog
> = NULL in the Dialog::Dialog().
> I did have a case which resulted in this crash.
> 
> case 2) after hangup, no SIP message is received from
> the network. In this case, the INVITE transaction will
> time out after 32 seconds and send 408 to TU, i.e,
> DUM.
> 
> Why we need to wait 32 seconds to release the created
> DialogSet, InvitationSessionCreator? So I sugges to
> add guard.destroy() in DialogSet::cancel().
> 
> kaiduan
> 
>  --- Scott Godin <slgodin@xxxxxxxxxxxx> wrote:
> > In the scenario you described the AppDialogSet
> > should get destroyed by DUM
> > after 64T1 expires (~32 seconds after the Invite).
> > So I don't think your
> > change is needed.
> >
> > Check out:
> >
> http://list.sipfoundry.org/archive/resiprocate-devel/msg01297.html
> >
> >
> > -----Original Message-----
> > From: kaiduan xie [mailto:kaiduanx@xxxxxxxx]
> > Sent: Thursday, September 16, 2004 12:55 AM
> > To: resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> > Subject: [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
> > _______________________________________________
> > resiprocate-devel mailing list
> > resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> >
> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
> >
> 
> ______________________________________________________________________
> Post your free ad now! http://personals.yahoo.ca
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel