email/imap4mtm/imapsession/src/cimapsessionmanager.cpp
branchRCL_3
changeset 26 ebe688cedc25
parent 0 72b543305e3a
child 27 7fdbb852d323
--- a/email/imap4mtm/imapsession/src/cimapsessionmanager.cpp	Thu Aug 19 09:51:11 2010 +0300
+++ b/email/imap4mtm/imapsession/src/cimapsessionmanager.cpp	Tue Aug 31 15:11:31 2010 +0300
@@ -141,7 +141,11 @@
 		{
 		__LOG_TEXT(aSessionList[session]->LogId(), "CImapSessionManager::Disconnect (async, list)");
 
-		iDisconnectList.Append(aSessionList[session]);
+		TInt err = iDisconnectList.Append(aSessionList[session]);
+		if(err != KErrNone)
+			{
+			break;
+			}
 		}
 
 	iProgressState = TImap4GenericProgress::EDisconnecting;
@@ -167,7 +171,11 @@
 		{
 		__LOG_TEXT(aSessionList[session]->LogId(), "CImapSessionManager::Disconnect (sync, list)");
 
-		iDisconnectList.Append(aSessionList[session]);
+		TInt err = iDisconnectList.Append(aSessionList[session]);
+		if(KErrNone != err)
+            {
+		    CloseSessionStreams(aSessionList[session]);
+            }
 		}
 
 	ImmediateDisconnect();
@@ -187,9 +195,20 @@
 
 	// Create a disconnect list with just this one session
 	iDisconnectList.Reset();
-	iDisconnectList.Append(&aSession);
+	TInt err = iDisconnectList.Append(&aSession);
+	
+	if(KErrNone != err)
+        {
+	    // remove contness of aSession
+	    CImapSession& session = const_cast<CImapSession&>(aSession);
+	    MOutputStream* outputStream = session.OutputStream();    
+        if (outputStream != NULL)
+            {
+            outputStream->Close();
+            }
+        }
+	
 	ImmediateDisconnect();
-
     __LOG_TEXT(aSession.LogId(), "CImapSessionManager::Disconnect() - END - (sync, session)");
 	}