browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpConnHandler.cpp
branchRCL_3
changeset 36 c711bdda59f4
parent 34 220a17280356
child 48 79859ed3eea9
--- 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<CHttpDownload>* 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;
     }
 
 // -----------------------------------------------------------------------------