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

Re: [reSIProcate] Unable to shutdown DUM during retransmission ofMESSAGE requests


On 8/10/05, Scott Godin <slgodin@xxxxxxxxxxxx> wrote:
> Ah, yes - I see the problem.  Calling end() while retransmissioning
> causes the following to occur:
> 
> Calling end() will cause ClientPagerMessage to be destructed.  The
> BaseUsage base class will end up calling DialogSet::possiblyDie().  The
> DialogSet::possiblyDie() method checks the state of the DialogSet and
> will not destroy itself if the DialogSet state is Initial.  Thus the
> DialogSet never get's deleted - and Dum will not shutdown.
> 
> Conversely, if you call end() in onFailure() the DialogSet state is
> changed to Established and possiblyDie ends up allowing the DialogSet to
> be deleted.  Shutdown works fine.
> 
> I'll have talk to the other developers on how to best fix this.  Should
> the DialogSet stay around until the final response?  If so, we need to
> handle self deletion if there are no usages or Dialogs existing on the
> DialogSet.

What would be the reason for keeping the usage around after the
application calls end? Shouldn't we just delete the usage right then
and there?

I think we should handle this self-deletion case when deleting
DialogSet with an extra check (as you suggest)

> 
> Thanks,
> 
> Scott
> 
> -----Original Message-----
> From: Dmitry Semyonov [mailto:dsemyonov@xxxxxxx]
> Sent: Wednesday, August 10, 2005 6:37 AM
> To: Scott Godin
> Cc: resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> Subject: RE: [reSIProcate] Unable to shutdown DUM during retransmission
> ofMESSAGE requests
> 
> Scott,
> 
> If I call end() inside onFailure() DUM shuts down indeed. But when
> end() is called during MESSAGE retransmissions, the retransmissions
> continue, (they even continue after shutdown()) and after that I
> can see in the trace that there is no "Destroying usage" line for
> MESSAGE DialogSet after retransmissions timeout.
> 
> See attached logs with two cases described above.
> 
> 
> On Tue, 9 Aug 2005, Scott Godin wrote:
> 
> > I can understand why it would not shutdown if you don't call end() -
> > since nothing would destroy the usage.
> >
> > But if you call end() before shutdown, then it SHOULD shutdown OK.  To
> > figure this one out - you will likely need to walk through a trace to
> > find out what usages/handles are still around.
> >
> > Scott
> >
> > -----Original Message-----
> > From: resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx
> > [mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
> > Dmitry Semyonov
> > Sent: Tuesday, August 09, 2005 1:00 PM
> > To: resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> > Subject: [reSIProcate] Unable to shutdown DUM during retransmission
> > ofMESSAGE requests
> >
> > Hello.
> >
> > Consider the following scenario.
> >  * Send MESSAGE to nowhere.
> >  * DUM starts the series of retransmissions.
> >  * Shutdown DUM before onFailure() is called due to retransmissions
> > timeout.
> >
> > In this case DUM never exits.
> >
> > I even tried to call ClientPagerMsgHandle->end() before shutting DUM
> > down with no luck. (I.e. I was not able to force transaction end.)
> 
> --
> ...Bye..Dmitry.
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
>