246 void CHttpConnStageNotifier::RunL() |
246 void CHttpConnStageNotifier::RunL() |
247 { |
247 { |
248 if( iStatus == KErrNone ) |
248 if( iStatus == KErrNone ) |
249 { |
249 { |
250 TInt stage = iProgressBuf().iStage; |
250 TInt stage = iProgressBuf().iStage; |
251 |
251 if ( iProgressBuf().iStage == KLinkLayerClosed && iProgressBuf().iError == KErrDisconnected ) |
|
252 iConnHandler->RetryNeeded(ETrue); |
|
253 |
252 iConnHandler->ConnectionStageChanged( stage ); |
254 iConnHandler->ConnectionStageChanged( stage ); |
253 |
255 |
254 if( stage > KConnectionUninitialised ) |
256 if( stage != KLinkLayerClosed ) |
255 // connection is still alive |
257 // connection is still alive |
256 { |
258 { |
257 iConnHandler->Connection().ProgressNotification( iProgressBuf, iStatus ); |
259 iConnHandler->Connection().ProgressNotification( iProgressBuf, iStatus ); |
258 SetActive(); |
260 SetActive(); |
259 } |
261 } |
762 { |
765 { |
763 CLOG_WRITE8_1( "Stage: %d", aStage ); |
766 CLOG_WRITE8_1( "Stage: %d", aStage ); |
764 |
767 |
765 iConnStage = aStage; |
768 iConnStage = aStage; |
766 |
769 |
767 if( iConnStage == KConnectionUninitialised || |
770 if( iConnStage == KLinkLayerClosed || |
768 iConnStage == KDataTransferTemporarilyBlocked |
771 iConnStage == KDataTransferTemporarilyBlocked |
769 ) |
772 ) |
770 { |
773 { |
771 __ASSERT_DEBUG( iClientApp, DMPanic( KErrCorrupt ) ); |
774 __ASSERT_DEBUG( iClientApp, DMPanic( KErrCorrupt ) ); |
772 CArrayPtrFlat<CHttpDownload>* downloads = |
775 CArrayPtrFlat<CHttpDownload>* downloads = |
773 iClientApp->Downloads(); |
776 iClientApp->Downloads(); |
774 for( TInt i = 0; i < downloads->Count(); ++i ) |
777 for( TInt i = 0; i < downloads->Count(); ++i ) |
775 { |
778 { |
|
779 if(iRetryNeeded && ((*downloads)[i]->State() == EHttpDlMultipleMOFailed || |
|
780 (*downloads)[i]->State() == EHttpDlInprogress )) |
|
781 { |
|
782 (*downloads)[i]->SetRetryFlag(ETrue); |
|
783 } |
|
784 } |
|
785 |
|
786 for( TInt i = 0; i < downloads->Count(); ++i ) |
|
787 { |
776 if( (*downloads)[i]->ConnHandler() == this ) |
788 if( (*downloads)[i]->ConnHandler() == this ) |
777 { |
789 { |
778 if( iConnStage == KConnectionUninitialised ) |
790 if( iConnStage == KLinkLayerClosed ) |
779 { |
791 { |
780 // from now on this name is invalid -> forget it! |
792 // from now on this name is invalid -> forget it! |
781 delete iConnName; iConnName = NULL; |
793 delete iConnName; iConnName = NULL; |
782 |
794 (*downloads)[i]->Disconnected(); |
783 (*downloads)[i]->Disconnected(); |
795 |
784 } |
796 } |
785 else |
797 else |
786 { |
798 { |
787 (*downloads)[i]->Suspended(); |
799 (*downloads)[i]->Suspended(); |
788 } |
800 } |
789 } |
801 } |
790 } |
802 } |
791 |
803 |
792 if( iConnStage == KConnectionUninitialised ) |
804 if( iConnStage == KLinkLayerClosed ) |
793 { |
805 { |
794 ShutDown(); |
806 ShutDown(); |
795 } |
807 } |
796 if ( iConnStage == KDataTransferTemporarilyBlocked ) |
808 if ( iConnStage == KDataTransferTemporarilyBlocked ) |
797 { |
809 { |