email/imap4mtm/imapsession/src/cimapsessionmanager.cpp
changeset 61 8ba0afbb4637
parent 0 72b543305e3a
child 60 7fdbb852d323
child 76 60a8a215b0ec
--- a/email/imap4mtm/imapsession/src/cimapsessionmanager.cpp	Wed Aug 18 09:45:25 2010 +0300
+++ b/email/imap4mtm/imapsession/src/cimapsessionmanager.cpp	Thu Sep 02 20:23:03 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)");
 	}