Переглянути джерело

Prevent reconnect when streaming, as we cannot resume then

Source commit: cb54a00685ad961ee0294f844ef18bc88f78aee1
Martin Prikryl 5 роки тому
батько
коміт
14afc35c9a
2 змінених файлів з 9 додано та 5 видалено
  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)
@@ -7353,7 +7355,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