فهرست منبع

Bug 2226: Failure when error occurs on secondary shell session with Continue on error option enabled

https://winscp.net/tracker/2226

Source commit: 692013f40d3854d57185e9871623f15d142411d5
Martin Prikryl 2 سال پیش
والد
کامیت
bf7bdabcfa
3فایلهای تغییر یافته به همراه11 افزوده شده و 10 حذف شده
  1. 7 7
      source/core/Terminal.cpp
  2. 3 2
      source/core/Terminal.h
  3. 1 1
      source/forms/CustomScpExplorer.cpp

+ 7 - 7
source/core/Terminal.cpp

@@ -1921,7 +1921,7 @@ bool __fastcall TTerminal::PromptUser(TSessionData * Data, TPromptKind Kind,
   return DoPromptUser(Data, Kind, Name, Instructions, Prompts, Results);
 }
 //---------------------------------------------------------------------------
-TTerminal * __fastcall TTerminal::GetPasswordSource()
+TTerminal * __fastcall TTerminal::GetPrimaryTerminal()
 {
   return this;
 }
@@ -1945,11 +1945,11 @@ bool __fastcall TTerminal::DoPromptUser(TSessionData * /*Data*/, TPromptKind Kin
       UnicodeString APassword;
       if (FTunnelOpening)
       {
-        APassword = GetPasswordSource()->GetRememberedTunnelPassword();
+        APassword = PrimaryTerminal->GetRememberedTunnelPassword();
       }
       else
       {
-        APassword = GetPasswordSource()->GetRememberedPassword();
+        APassword = PrimaryTerminal->GetRememberedPassword();
       }
       FRememberedPasswordUsed = true;
       Results->Strings[0] = APassword;
@@ -1992,12 +1992,12 @@ bool __fastcall TTerminal::DoPromptUser(TSessionData * /*Data*/, TPromptKind Kin
       RawByteString EncryptedPassword = EncryptPassword(Results->Strings[0]);
       if (FTunnelOpening)
       {
-        GetPasswordSource()->FRememberedTunnelPassword = EncryptedPassword;
+        PrimaryTerminal->FRememberedTunnelPassword = EncryptedPassword;
       }
       else
       {
-        GetPasswordSource()->FRememberedPassword = EncryptedPassword;
-        GetPasswordSource()->FRememberedPasswordKind = Kind;
+        PrimaryTerminal->FRememberedPassword = EncryptedPassword;
+        PrimaryTerminal->FRememberedPasswordKind = Kind;
       }
     }
   }
@@ -9030,7 +9030,7 @@ void __fastcall TSecondaryTerminal::DirectoryModified(const UnicodeString Path,
   FMainTerminal->DirectoryModified(Path, SubDirs);
 }
 //---------------------------------------------------------------------------
-TTerminal * __fastcall TSecondaryTerminal::GetPasswordSource()
+TTerminal * __fastcall TSecondaryTerminal::GetPrimaryTerminal()
 {
   return FMainTerminal;
 }

+ 3 - 2
source/core/Terminal.h

@@ -436,7 +436,7 @@ protected:
     const UnicodeString TargetDir, const TCopyParamType * CopyParam,
     TFileOperationProgressType * OperationProgress, bool Parallel, TStrings * Files);
   void __fastcall LogTotalTransferDone(TFileOperationProgressType * OperationProgress);
-  virtual TTerminal * __fastcall GetPasswordSource();
+  virtual TTerminal * __fastcall GetPrimaryTerminal();
   void __fastcall DoEndTransaction(bool Inform);
   bool  __fastcall VerifyCertificate(
     const UnicodeString & CertificateStorageKey, const UnicodeString & SiteKey,
@@ -675,6 +675,7 @@ public:
   __property bool AreCachesEmpty = { read = GetAreCachesEmpty };
   __property bool CommandSessionOpened = { read = GetCommandSessionOpened };
   __property TTerminal * CommandSession = { read = GetCommandSession };
+  __property TTerminal * PrimaryTerminal = { read = GetPrimaryTerminal };
   __property bool AutoReadDirectory = { read = FAutoReadDirectory, write = FAutoReadDirectory };
   __property TStrings * FixedPaths = { read = GetFixedPaths };
   __property bool ResolvingSymlinks = { read = GetResolvingSymlinks };
@@ -705,7 +706,7 @@ protected:
   virtual void __fastcall DirectoryLoaded(TRemoteFileList * FileList);
   virtual void __fastcall DirectoryModified(const UnicodeString Path,
     bool SubDirs);
-  virtual TTerminal * __fastcall GetPasswordSource();
+  virtual TTerminal * __fastcall GetPrimaryTerminal();
 
 private:
   TTerminal * FMainTerminal;

+ 1 - 1
source/forms/CustomScpExplorer.cpp

@@ -7728,7 +7728,7 @@ void __fastcall TCustomScpExplorerForm::PopupTrayBalloon(TTerminal * Terminal,
       Title = LoadResourceString(Captions[Type]);
       if (Terminal != NULL)
       {
-        TManagedTerminal * Session = DebugNotNull(dynamic_cast<TManagedTerminal *>(Terminal));
+        TManagedTerminal * Session = DebugNotNull(dynamic_cast<TManagedTerminal *>(Terminal->PrimaryTerminal));
         Title = TTerminalManager::Instance()->GetSessionTitle(Session, true) + TitleSeparator + Title;
       }
     }