Browse Source

Change: When executing script file or script commands provided on command-line, default reconnect time is set to 120 seconds, if not limited yet by configuration

Source commit: 403e3e11ac7951f1b3e9fbd5d9641ffe270a92c6
Martin Prikryl 9 years ago
parent
commit
6403692f8c
2 changed files with 15 additions and 3 deletions
  1. 14 3
      source/core/Script.cpp
  2. 1 0
      source/core/Script.h

+ 14 - 3
source/core/Script.cpp

@@ -306,11 +306,13 @@ void __fastcall TScriptCommands::Execute(const UnicodeString & Command, const Un
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
+// keep in sync with Session constructor in .NET
+const int BatchSessionReopenTimeout = 2 * MSecsPerSec * SecsPerMin; // 2 mins
+//---------------------------------------------------------------------------
 __fastcall TScript::TScript(bool LimitedOutput)
 {
   FLimitedOutput = LimitedOutput;
   FTerminal = NULL;
-  FSessionReopenTimeout = Configuration->SessionReopenTimeout;
   FGroups = false;
   FWantsProgress = false;
   FIncludeFileMaskOptionUsed = false;
@@ -331,6 +333,13 @@ void __fastcall TScript::Init()
   FInteractiveBatch = BatchOff;
   FConfirm = false;
   FInteractiveConfirm = true;
+  FSessionReopenTimeout = Configuration->SessionReopenTimeout;
+  FInteractiveSessionReopenTimeout = FSessionReopenTimeout;
+  if (FSessionReopenTimeout == 0)
+  {
+    FSessionReopenTimeout = BatchSessionReopenTimeout;
+  }
+
   FEcho = false;
   FFailOnNoMatch = false;
   FSynchronizeParams = 0;
@@ -475,6 +484,7 @@ void __fastcall TScript::StartInteractive()
 {
   FBatch = FInteractiveBatch;
   FConfirm = FInteractiveConfirm;
+  FSessionReopenTimeout = FInteractiveSessionReopenTimeout;
 }
 //---------------------------------------------------------------------------
 void __fastcall TScript::Command(UnicodeString Cmd)
@@ -1548,8 +1558,8 @@ void __fastcall TScript::OptionImpl(UnicodeString OptionName, UnicodeString Valu
 
       if (SetValue && (FBatch != BatchOff) && (FSessionReopenTimeout == 0))
       {
-        // keep in sync with Session constructor in .NET
-        FSessionReopenTimeout = 2 * MSecsPerSec * SecsPerMin; // 2 mins
+        FSessionReopenTimeout = BatchSessionReopenTimeout;
+        FInteractiveSessionReopenTimeout = FSessionReopenTimeout;
         PrintReconnectTime = true;
       }
     }
@@ -1655,6 +1665,7 @@ void __fastcall TScript::OptionImpl(UnicodeString OptionName, UnicodeString Valu
         }
       }
       FSessionReopenTimeout = Value;
+      FInteractiveSessionReopenTimeout = FSessionReopenTimeout;
     }
 
     if (FSessionReopenTimeout == 0)

+ 1 - 0
source/core/Script.h

@@ -95,6 +95,7 @@ protected:
   UnicodeString FSynchronizeIntro;
   bool FLimitedOutput;
   int FSessionReopenTimeout;
+  int FInteractiveSessionReopenTimeout;
   bool FGroups;
   bool FWantsProgress;
   TStrings * FPendingLogLines;