diff -r 1f3c3f2f5b0a -r c711bdda59f4 browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpConnHandler.cpp --- a/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpConnHandler.cpp Mon Mar 15 12:44:50 2010 +0200 +++ b/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpConnHandler.cpp Wed Mar 31 23:16:40 2010 +0300 @@ -248,10 +248,12 @@ if( iStatus == KErrNone ) { TInt stage = iProgressBuf().iStage; - + if ( iProgressBuf().iStage == KLinkLayerClosed && iProgressBuf().iError == KErrDisconnected ) + iConnHandler->RetryNeeded(ETrue); + iConnHandler->ConnectionStageChanged( stage ); - if( stage > KConnectionUninitialised ) + if( stage != KLinkLayerClosed ) // connection is still alive { iConnHandler->Connection().ProgressNotification( iProgressBuf, iStatus ); @@ -300,6 +302,7 @@ //Set it to zero iIapId = 0; + iRetryNeeded = EFalse; } // ----------------------------------------------------------------------------- @@ -764,7 +767,7 @@ iConnStage = aStage; - if( iConnStage == KConnectionUninitialised || + if( iConnStage == KLinkLayerClosed || iConnStage == KDataTransferTemporarilyBlocked ) { @@ -772,24 +775,33 @@ CArrayPtrFlat* downloads = iClientApp->Downloads(); for( TInt i = 0; i < downloads->Count(); ++i ) - { + { + if(iRetryNeeded && ((*downloads)[i]->State() == EHttpDlMultipleMOFailed || + (*downloads)[i]->State() == EHttpDlInprogress )) + { + (*downloads)[i]->SetRetryFlag(ETrue); + } + } + + for( TInt i = 0; i < downloads->Count(); ++i ) + { if( (*downloads)[i]->ConnHandler() == this ) { - if( iConnStage == KConnectionUninitialised ) + if( iConnStage == KLinkLayerClosed ) { // from now on this name is invalid -> forget it! - delete iConnName; iConnName = NULL; - - (*downloads)[i]->Disconnected(); + delete iConnName; iConnName = NULL; + (*downloads)[i]->Disconnected(); + } else - { + { (*downloads)[i]->Suspended(); } } } - if( iConnStage == KConnectionUninitialised ) + if( iConnStage == KLinkLayerClosed ) { ShutDown(); } @@ -803,6 +815,7 @@ { Connected(); } + iRetryNeeded = EFalse; } // -----------------------------------------------------------------------------