diff -r cb62a4f66ebe -r 6297cdf66332 browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp --- 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();