[reSIProcate] ClientPagerMessage::end()

Dmitry Semyonov dsemyonov at dins.ru
Fri Aug 5 11:39:03 CDT 2005


On Thu, 4 Aug 2005, Dmitry Semyonov wrote:

> I've just found that it is necessary to call handle->end() inside 
> onSuccess() and onFailure() handlers for pager messages in order to 
> destroy corresponding DialogSet.
> 
> Shouldn't the note about end() be added to PagerMessageHandler.hxx?

Hmm. It seems the above is not quite correct.

One must not call h->end() from onFailure() handler. Otherwise 
reSIProcate will crash during deletion of contents auto_ptr which is 
passed to onFailure().

But! The usage will not be destroyed if h->end() is not called, 
although the opposite is stated in the comments. I think the following 
patch should be applied to ClientPagerMessage.cxx:

Index: ClientPagerMessage.cxx
===================================================================
--- ClientPagerMessage.cxx	(revision 5203)
+++ ClientPagerMessage.cxx	(working copy)
@@ -163,6 +163,7 @@
            }
 
            mMsgQueue.clear();
+           delete this;
         }
     }
 }

Otherwise reSIProcate hangs on shutdown due to hanging DialogSet.

Unfortunately I suspect this could interfere with the following 
functionality: "Application could re-page the failed contents".

Please, comment on the above. TIA.

-- 
...Bye..Dmitry.



More information about the resiprocate-devel mailing list