Browse Source

Prevent reconnect when streaming, as we cannot resume then

(cherry picked from commit 14afc35c9ab5890e36ccd671cab1d636c7b06e9c)

Source commit: f2028f98f9e41ffb01918dd73df4fb367147b30f
Martin Prikryl 5 years ago
parent
commit
10b6a18654
2 changed files with 9 additions and 5 deletions
  1. 7 4
      source/core/Terminal.cpp
  2. 2 1
      source/core/Terminal.h

+ 7 - 4
source/core/Terminal.cpp

@@ -412,11 +412,13 @@ bool __fastcall TCallbackGuard::Verify(Exception * E)
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-TRobustOperationLoop::TRobustOperationLoop(TTerminal * Terminal, TFileOperationProgressType * OperationProgress, bool * AnyTransfer) :
+TRobustOperationLoop::TRobustOperationLoop(
+  TTerminal * Terminal, TFileOperationProgressType * OperationProgress, bool * AnyTransfer, bool CanRetry) :
   FTerminal(Terminal),
   FOperationProgress(OperationProgress),
   FRetry(false),
-  FAnyTransfer(AnyTransfer)
+  FAnyTransfer(AnyTransfer),
+  FCanRetry(CanRetry)
 {
   if (FAnyTransfer != NULL)
   {
@@ -436,7 +438,7 @@ TRobustOperationLoop::~TRobustOperationLoop()
 //---------------------------------------------------------------------------
 bool TRobustOperationLoop::TryReopen(Exception & E)
 {
-  FRetry = !FTerminal->Active;
+  FRetry = FCanRetry && !FTerminal->Active;
   if (FRetry)
   {
     if (FAnyTransfer != NULL)
@@ -7354,7 +7356,8 @@ void __fastcall TTerminal::SinkRobust(
 {
   TDownloadSessionAction Action(ActionLog);
   bool * AFileTransferAny = FLAGSET(Flags, tfUseFileTransferAny) ? &FFileTransferAny : NULL;
-  TRobustOperationLoop RobustLoop(this, OperationProgress, AFileTransferAny);
+  bool CanRetry = (CopyParam->OnTransferOut == NULL);
+  TRobustOperationLoop RobustLoop(this, OperationProgress, AFileTransferAny, CanRetry);
   bool Sunk = false;
 
   do

+ 2 - 1
source/core/Terminal.h

@@ -786,7 +786,7 @@ struct TSpaceAvailable
 class TRobustOperationLoop
 {
 public:
-  TRobustOperationLoop(TTerminal * Terminal, TFileOperationProgressType * OperationProgress, bool * AnyTransfer = NULL);
+  TRobustOperationLoop(TTerminal * Terminal, TFileOperationProgressType * OperationProgress, bool * AnyTransfer = NULL, bool CanRetry = true);
   ~TRobustOperationLoop();
   bool TryReopen(Exception & E);
   bool ShouldRetry();
@@ -799,6 +799,7 @@ private:
   bool * FAnyTransfer;
   bool FPrevAnyTransfer;
   TDateTime FStart;
+  bool FCanRetry;
 };
 //---------------------------------------------------------------------------
 class TCollectedFileList : public TObject