email/imap4mtm/imapservermtm/src/cimapupsresponsewaiter.cpp
branchRCL_3
changeset 33 94cccd85bd25
parent 21 c6838af47512
child 57 ebe688cedc25
--- a/email/imap4mtm/imapservermtm/src/cimapupsresponsewaiter.cpp	Tue May 25 12:38:02 2010 +0300
+++ b/email/imap4mtm/imapservermtm/src/cimapupsresponsewaiter.cpp	Wed Jun 09 09:37:26 2010 +0300
@@ -37,7 +37,8 @@
 CImapUpsResponseWaiter::CImapUpsResponseWaiter(CMsvServerEntry& aServerEntry, CImapProtocolController& aImapProtocolController)
 	:CMsgActive(EPriorityStandard), iServerEntry(aServerEntry), iImapProtocolController(aImapProtocolController)
 	{
-	CActiveScheduler::Add(this);
+    iImapSettings = CImapSettings::NewL(iServerEntry);
+    CActiveScheduler::Add(this);
 	}
 
 /**
@@ -46,6 +47,7 @@
 CImapUpsResponseWaiter::~CImapUpsResponseWaiter()
 	{
 	Cancel();
+	delete iImapSettings;
 	iUpsSubsession.Close();
 	iUpsSession.Close(); 
 	}
@@ -73,28 +75,32 @@
 		{
 		iState = EIMAP4MTMConnectAndSynchronise;
 		}
-	iEntrySelection = &aEntrySelection;
+	
+    iEntrySelection = &aEntrySelection;
 	
 	iDecision = EUpsDecNo;
 	
-	CImapSettings* imapSettings = CImapSettings::NewL(iServerEntry);
-	CleanupStack::PushL(imapSettings);
-	imapSettings->LoadSettingsL(iServerEntry.Entry().Id());
+	if( iImapSettings->SettingsLoaded() == EFalse)
+	    {
+	    iImapSettings->LoadSettingsL(iServerEntry.Entry().Id());
+	    }
 
 	// Connect to UPS service.....
 	User::LeaveIfError(iUpsSession.Connect());
+
 	RThread clientThread;
  	User::LeaveIfError(clientThread.Open(aClientThreadId));
 	CleanupClosePushL(clientThread);
- 	User::LeaveIfError(iUpsSubsession.Initialise(iUpsSession, clientThread));
+
+    User::LeaveIfError(iUpsSubsession.Initialise(iUpsSession, clientThread));
 	CleanupStack::PopAndDestroy(&clientThread);
 	
-	
 	iStatus=KRequestPending;
-	iUpsSubsession.Authorise(aHasCapability, KUidIMAPService, imapSettings->ServerAddress(), iDecision, iStatus);
+	iUpsSubsession.Authorise(aHasCapability, KUidIMAPService, iImapSettings->ServerAddress(), iDecision, iStatus);
+
 	Queue(aStatus);
 	SetActive();
-	CleanupStack::PopAndDestroy();// imapSettings
+    	
 	}