diff -r 50de4d668bb6 -r 82c0024438c8 metadataengine/server/src/mdsserversession.cpp --- a/metadataengine/server/src/mdsserversession.cpp Wed Mar 31 22:19:07 2010 +0300 +++ b/metadataengine/server/src/mdsserversession.cpp Wed Apr 14 16:24:03 2010 +0300 @@ -69,7 +69,6 @@ // void CMdSServerSession::ConstructL() { - iServer.IncrementSessions(); } // --------------------------------------------------------------------------- @@ -92,7 +91,6 @@ iServer.LockList().UnlockBySession( *this ); iServer.Notifier().RemoveEntriesBySession( *this ); - iServer.DecrementSessions(); // purge any pending notifications iNotificationCache.ResetAndDestroy(); @@ -105,12 +103,25 @@ // void CMdSServerSession::ServiceL( const RMessage2& aMessage ) { - __LOG2( ELogServer, "ServiceL message: %d uid: %.8x", + __LOG2( ELogServer, "ServiceL message: %d uid: %d", aMessage.Function(), - aMessage.Identity()); - + aMessage.Identity().iUid); + if( iServer.BackupOrRestoreRunning() ) { + // Open client applications are closed during backup/restore, + // thus registered observers that would be removed during + // shutdown on clients, must be allowed to be removed even + // if backup/restore is running + if( aMessage.Function() == EUnregister ) + { + TRAPD( err, ServiceFunctionL( aMessage ) ); + if( err != KErrNone ) + { + aMessage.Complete( err ); + } + return; + } aMessage.Complete( KErrServerBusy ); return; }