--- 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;
}