diff -r 7e4e4bcc75b6 -r 94cccd85bd25 email/imap4mtm/imapservermtm/src/cimapupsresponsewaiter.cpp --- 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 + }