Skip to content

Open Salamander 6.0.126

Choose a tag to compare

@github-actions github-actions released this 04 Sep 19:27
· 26 commits to main since this release
Implemented nonblocking FTPS data-channel handshakes

Key changes:
- Added an event-driven SChannel handshake state machine that preserves partial input/output across FD_READ and FD_WRITE events ([ssl.cpp (line 706)](C:/Projects/FileManager/src/plugins/ftp/ssl.cpp:706)).
- Kept incomplete TLS contexts separate from established connections, with cancellation and socket-swap cleanup ([sockets.h (line 136)](C:/Projects/FileManager/src/plugins/ftp/sockets.h:136)).
- Integrated the state machine into passive and active downloads, uploads, and keep-alive transfers ([datacon1.cpp (line 913)](C:/Projects/FileManager/src/plugins/ftp/datacon1.cpp:913), [datacon2.cpp (line 1162)](C:/Projects/FileManager/src/plugins/ftp/datacon2.cpp:1162)).
- Upload payload and EOF processing remain blocked until TLS authentication completes.
- Preserved application data arriving alongside the final TLS handshake record.
- The blocking handshake remains for control connections; per-file data connections no longer use it.
- Added a regression contract preventing data paths from reverting to blocking EncryptSocket calls ([NativeSafetyRegressionTests.cs (line 2856)](C:/Projects/FileManager/tests/FileManager.UiTests/NativeSafetyRegressionTests.cs:2856)).
Validation:
- FTP plug-in Debug x64 full build: succeeded using Visual Studio Community 2026 with incremental linking disabled.
- Native safety regression suite: 72/72 passed.
- git diff --check: passed.
- The default incremental build triggers an internal VS 2026 linker LNK1000 in the language resource DLL; /p:LinkIncremental=false builds the complete plug-in successfully.