SFTP support for the go.crypto/ssh package
[GH-499] writeToSequential: improve tests for write errors [GH-513] More context for EOF during client setup [GH-516] RealPathFileLister: allow to return an error [GH-525] Document the weirdness of the reversal of arguments to SSH_FXP_SYMLINK [GH-526] request server: handle relative symlinks [GH-528] Add support for working directory in Server [GH-533] CI: add CIFuzz integration [GH-537] Stop ReadFromWithConcurrency sending more data than it needs to [GH-545] refactor sshfx encoding, fix link rot, go fmt [GH-553] Marshal extended attribute data if FileInfo supports it [GH-554] Properly handle io.EOF error conditions when reading
[GH-498] request server: add WithStartDirectory option [GH-494] sequential writes: ensure to always return write errors, if any [GH-492] PosixRename and Hardlink: convert remote paths to local paths [GH-489] Fix missing io.EOF when concurency is disabled [GH-485] Add File.ReadFrom test on a SectionReader [GH-482] Sequentially issue write requests, process results concurrently [GH-478] Translate EACCES to PERMISSION_DENIED [GH-471] CI: run test cases also on 32-bit arch
This release changes no actual non-test code. However, testing on 32-bit architectures was broken, and blocking a major linux distro’s progress as a result of overflows of untyped const
s into implicit int
s mostly when printing test failures.
[GH-467] BUGFIX: Statfs was not populating its respond ID, leading to clients receiving unexpected 0
request ids.
[GH-455] Cleanup Request mutex usage
[GH-456] Regrouping code, linting, and better longname
LS formatting
[GH-459] Add testing for go1.17, remove testing for go1.15
[GH-441] Use go errors instead of github.com/pkg/errors [GH-443] Sequentially issue read requests in ReadAt [GH-445] The server implementation can now handle Windows paths [GH-452] Fix long output for directory listing response
New features and bugfixes.
Request Server:
Client:
New features and bugfixes.
Request Server:
Client:
[email protected]
.WriterAt
interface. Concurrent writes are not longer enabled by default for safety reasons. You can use the option UseConcurrentWrites if it's needed for your use case.os.ErrPermission
to map sshFxPermissionDenied
.Misc:
os.IsNotExist
to map sshFxNoSuchFile
.First release in some time. Fixing lots of bugs and adding io.ReaderAt
compatibility of files, and various allocation and byte-slice optimizations courtesy of Nicola "@drakkan" Murino.
Below are the highlights:
Features:
[GH-285] Implement io.ReaderAt
interface on File
struct.
[GH-338] Remove an unnecessary allocate+copy when unmarshaling data packets.
[GH-343] Allocate byte-slices anticipating full capacity to avoid allocate+copies when they are extended.
[GH-344] Add an optional caching allocator, to allow reuse of buffers, rather than always allocating anew.
Bugfixes:
[GH-329] S_IFMT overridden for Windows, JS, WASM to the most prevalent POSIX value.
[GH-337]: In integration tests, expect /usr/lib/ssh/sftp-server
as a possible executable location.
[GH-340]: Update golang.org/x/crypto to address vulnerability CVE-2020-9283
[GH-342]: Fix race condition between Connection and Close
[GH-355]: cleanPath
operates on remote paths, so always use path
(POSIX) rather than filepath
(local file system rules).
[GH-363]: Fix some small unlikely RequestServer.Serve bugs.
[GH-372]: Add mutex protection to internal File
offset used by Read
.
[GH-373]: RequestServer incorrectly interpreted SSH_FXP_FSETSTAT
as a "Put"
request.
Updates: [GH-365], [GH-376]: Update dependencies In [GH-344], [GH-373]: travis now tests against Go versions { 1.14, 1.15 }, instead of { 1.12, 1.13 }