messagingfw/msgsrvnstore/server/src/MSVSERV.CPP
changeset 15 ff168ad79dda
parent 0 8e480a14352b
child 17 d6ba66e59a81
--- a/messagingfw/msgsrvnstore/server/src/MSVSERV.CPP	Tue Feb 02 10:12:21 2010 +0200
+++ b/messagingfw/msgsrvnstore/server/src/MSVSERV.CPP	Fri Apr 16 15:27:42 2010 +0300
@@ -251,7 +251,7 @@
 
 
 CMsvServer::CMsvServer(TInt aPriority, TBool aDebug)
-:   CPolicyServer(aPriority, msgServerPolicy), iSessionNumber(1), iMtmOperationQueueArray(KMsvMtmOpsQueueArrayGranularity), iDebug(aDebug)
+:   CPolicyServer(aPriority, msgServerPolicy), iSessionNumber(1), iMtmOperationQueueArray(KMsvMtmOpsQueueArrayGranularity), iDebug(aDebug), iReleasedForRestore(EFalse)
 //
 //
 //
@@ -2015,15 +2015,6 @@
 			iStartupState = EMsvMediaUnavailable;
 			drive = iSystemDrive;
 			}
-		else if (iNewContext->Config().iUniqueID != 0 && iNewContext->Config().iUniqueID != volume.iUniqueID)
-			{
-#ifndef _NO_SERVER_LOGGING_
-			Log(_L("The media is incorrect %d != %d - using default"), iNewContext->Config().iUniqueID, volume.iUniqueID);
-#endif
-			// The media is incorrect - use default
-			iStartupState = EMsvMediaIncorrect;
-			drive = iSystemDrive;
-			}
 		iNewContext->CreateIndexL(drive, aSync);
 		return;
 		}
@@ -2277,8 +2268,14 @@
 #ifndef _NO_SERVER_LOGGING_
 	Log(_L("Disk %d removed"), TInt(aDrive));
 #endif
-
-	NotifyChanged(EMsvMediaUnavailable, KMsvNullIndexEntryId, TInt(aDrive));
+	if(iContext->IndexAdapter()->ErrorState() != KMsvIndexRestore)
+		{
+		NotifyChanged(EMsvMediaUnavailable, KMsvNullIndexEntryId, TInt(aDrive));
+		}
+	else
+		{
+		iReleasedForRestore = ETrue;
+		}
 	iContext->IndexAdapter()->SetErrorState(KMsvMediaUnavailable);
 	iContext->IndexAdapter()->DeleteDbAdapter();
 
@@ -2296,8 +2293,14 @@
 #ifndef _NO_SERVER_LOGGING_
 	Log(_L("Disk %d inserted"), TInt(aDrive));
 #endif
-
-	NotifyChanged(EMsvMediaAvailable, KMsvNullIndexEntryId, TInt(aDrive));
+	if(!iReleasedForRestore)
+		{
+		NotifyChanged(EMsvMediaAvailable, KMsvNullIndexEntryId, TInt(aDrive));
+		}
+	else
+		{
+		iReleasedForRestore = EFalse;
+		}
 
 	iContext->IndexAdapter()->SetErrorState(KErrNone);
 
@@ -3564,6 +3567,7 @@
 	// if an operation is already running, queue this one
 	if (opRunning)
 		{
+        aOperation.SetCapability(hasCapability);
 		QueueOperationL(aOperation, aSessionId);
 		return;
 		}
@@ -3742,7 +3746,8 @@
 			return;
 			}
 		}
-	aQueue->At(0)->Start(*aQueue->iMtm, EFalse);
+	
+	aQueue->At(0)->Start(*aQueue->iMtm, aQueue->At(0)->Capability());
 	aQueue->At(0)->SetState(EMsvOperationRunning);
 	}