browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp
changeset 27 6297cdf66332
parent 0 dd21522fd290
child 28 d39add9822e2
--- a/browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp	Thu Jan 07 13:31:38 2010 +0200
+++ b/browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp	Mon Jan 18 21:20:18 2010 +0200
@@ -34,6 +34,7 @@
     : CActive( aPriority )
     , iConnection( aConnection )
 	{
+    iWait = EFalse;
 	CLOG_CREATE;
 	CActiveScheduler::Add( this );//inserting this into the queue
 	}
@@ -43,6 +44,7 @@
 //--------------------------------------------------------------------------
 CConnManActiveConnector::~CConnManActiveConnector()
 	{
+    iWait = EFalse;
 	Cancel();//The standard way of destroying an Active object
 	CLOG_CLOSE;
 	}
@@ -101,8 +103,11 @@
 void CConnManActiveConnector::DoCancel()
 	{
 	CLOG_WRITE( "CConnManActiveConnector: DoCancel called");
-	iConnection.Close();
-	User::RequestComplete( iExternalRequestStatus, KErrCancel );//completing user req
+    if(iWait)
+        {
+        iConnection.Close();
+        User::RequestComplete( iExternalRequestStatus, KErrCancel );//completing user req
+        }
 	CLOG_WRITE( "CConnManActiveConnector: DoCancel returned");
 	}
 
@@ -111,6 +116,7 @@
 //--------------------------------------------------------------------------
 void CConnManActiveConnector::RunL()
 	{
+    iWait = ETrue;
     CLOG_WRITE_1( "CConnManAct::RunL(): %d", iStatus.Int() );
 	User::RequestComplete( iExternalRequestStatus, iStatus.Int() );
 	}
@@ -194,9 +200,10 @@
 //--------------------------------------------------------------------------
 void CActiveConnectorSyncWrapper::DoCancel()
 	{
-    
-    iActiveConnector->Cancel();
-	
+    if(iActiveConnector->IsActive())
+        {
+        iActiveConnector->Cancel();
+        }
 	if(iWait.IsStarted())
 	  {
 	   iWait.AsyncStop();