diff -r e6b17d312c8b -r b610b446cb01 imservices/instantmessagingcache/imcacheclient/src/cimcacheeventhandler.cpp --- a/imservices/instantmessagingcache/imcacheclient/src/cimcacheeventhandler.cpp Thu Dec 17 08:54:49 2009 +0200 +++ b/imservices/instantmessagingcache/imcacheclient/src/cimcacheeventhandler.cpp Thu Jan 07 12:56:16 2010 +0200 @@ -142,9 +142,12 @@ } } + // Comment: cancel operation is changes as synchronous. iContinueObserving from event + // can not really be trusted since complete code might be different if leave has occured + // for example. Cancel is handled here as generic cancel. TRACE( T_LIT("CIMCacheEventHandler::RunL() iContinueObserving iContinueObserving = %d") ,iContinueObserving); // check need to continue observing to server - if( iContinueObserving ) + if( iContinueObserving && KErrCancel != iStatus.Int() ) { iRegistrar.RegisterObserverToServerL( iStatus ,EIMCacheObserveMessageUpdateRegister ); SetActive(); @@ -158,6 +161,9 @@ void CIMCacheEventHandler::DoCancel() { TRACE( T_LIT("CIMCacheEventHandler::DoCancel() ") ); + // Comment: set to EFalse here since we can not trust other changes. See + // comments in RunL + iContinueObserving = EFalse; if( IsActive() ) { TRAP_IGNORE(iRegistrar.CancelRequestL( iStatus ,EIMCacheCancelRequest ));