Skip to content

Draft: Introduce high level sftp file transfer api

Add a description of the new feature/bug fix. Reference any relevant bugs.

Checklist

  • Commits have Signed-off-by: with name/author being identical to the commit author
  • Code modified for feature
  • Test suite updated with functionality tests
  • Test suite updated with negative tests
  • Documentation updated

Reviewer's checklist:

  • Any issues marked for closing are addressed
  • There is a test suite reasonably covering new functionality or modifications
  • Function naming, parameters, return values, types, etc., are consistent and according to CONTRIBUTING.md
  • This feature/change has adequate documentation added
  • No obvious mistakes in the code

Summary by Sourcery

Introduce a new high-level SFTP FT subsystem in libssh to simplify file transfers (upload, download, remote copy) with extended resume, metric tracking, and progress callback support, alongside a copy-range extension and buffer file I/O utilities, complete with tests, benchmarks, and documentation.

New Features:

  • Introduce high-level SFTP file transfer API supporting upload, download, and remote copy with resume, metrics, and progress callbacks
  • Implement sftp_copy_file_range to leverage the SFTP "copy-data" extension for direct file‐to‐file copying
  • Add ssh_buffer_file_read and ssh_buffer_file_write helper APIs to load/store data between ssh_buffer and local files

Enhancements:

  • Expose file transfer metrics (bytes transferred, total, skipped) via sftp_ft_get_* functions
  • Support configurable chunk sizes and concurrent request counts in SFTP transfers
  • Integrate SFTP FT API into existing benchmarks with new options for upload, download, and remote copy

Build:

  • Update CMakeLists to compile and link new sftp_ft module and include corresponding tests and benchmarks

Documentation:

  • Add user-facing documentation for the SFTP FT API in doc/sftp_ft.dox

Tests:

  • Add comprehensive cmocka tests for the new SFTP FT API (including resume, chunk/request variations, and target file modes)
  • Add torture tests for sftp_copy_file_range and new buffer read/write functions
  • Extend unittests to cover ssh_buffer_file_read and ssh_buffer_file_write behaviors
Edited by sourcery-ai

Merge request reports

Loading