• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

veeso / suppaftp / 34238691814
83%

Build:
DEFAULT BRANCH: main
Ran 08 Sep 2026 02:32PM UTC
Jobs 1
Files 35
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 Sep 2026 02:30PM UTC coverage: 82.93% (+2.4%) from 80.526%
34238691814

push

github

web-flow
feat!: make data streams finalize themselves (#175)

* feat!: make data streams finalize themselves

Move the control connection (reply reader and data-connection flag) of
every client behind an Arc<Mutex<..>> shared with a new TransferStream
returned by put_with_stream, append_with_stream, retr_as_stream and
custom_data_command. The stream closes its data socket and reads the
226/250 reply itself through finish(); a dropped stream does the same
(sync) or defers the reply to the next command (tokio, smol), so the
control connection can no longer desynchronize because a caller forgot
to finalize.

BREAKING CHANGE: finalize_put_stream, finalize_retr_stream and
close_data_connection are removed; put_with_stream, append_with_stream,
retr_as_stream and custom_data_command return TransferStream, whose
finish() replaces them; abort takes a TransferStream; the async retr
callbacks receive and return a TransferStream; get_ref returns a locked
ControlSocket (async: through an async fn); get_lines_from_stream is
generic over BufRead readers.

* fix: preserve transfer cleanup across cancellation and locking

Retain pending replies and partial response buffers when async finalization is cancelled. Record dropped transfers without locking the control channel and reject TLS mode changes before sending commands while a transfer is alive.

Add regression coverage for cancellation, control socket contention, and TLS transitions. Document the breaking stream API migration and cleanup limitations, and resolve test helper lint warnings.

* docs: move stream migration notes into commit description

Migrating to self-finalizing streams (unreleased)

The next major release changes the streaming API from version 11. The changes below
apply to this development branch and are not available in the published version 11.

- `put_with_stream`, `append_with_stream`, `retr_as_stream`, and
  `custom_data_command` return a `TransferStream` that owns transfer cleanup.
- Replace `ftp.fin... (continued)

1688 of 1878 new or added lines in 10 files covered. (89.88%)

6 existing lines in 3 files now uncovered.

6369 of 7680 relevant lines covered (82.93%)

174.47 hits per line

Uncovered Changes

Lines Coverage ∆ File
56
87.56
1.36% crates/suppaftp/src/sync_ftp.rs
25
90.64
2.56% crates/suppaftp/src/async_ftp/tokio_ftp.rs
24
84.0
crates/suppaftp/src/sync_ftp/control.rs
21
89.83
2.42% crates/suppaftp/src/async_ftp/smol_ftp.rs
16
89.33
crates/suppaftp/src/async_ftp/smol_ftp/control.rs
16
89.94
crates/suppaftp/src/async_ftp/tokio_ftp/control.rs
13
93.87
crates/suppaftp/src/async_ftp/smol_ftp/transfer_stream.rs
10
80.39
crates/suppaftp/src/sync_ftp/transfer_stream.rs
9
95.26
crates/suppaftp/src/async_ftp/tokio_ftp/transfer_stream.rs

Coverage Regressions

Lines Coverage ∆ File
3
90.64
2.56% crates/suppaftp/src/async_ftp/tokio_ftp.rs
2
87.56
1.36% crates/suppaftp/src/sync_ftp.rs
1
89.83
2.42% crates/suppaftp/src/async_ftp/smol_ftp.rs
Jobs
ID Job ID Ran Files Coverage
1 34238691814.1 08 Sep 2026 02:32PM UTC 35
82.93
GitHub Action Run
Source Files on build 34238691814
  • Tree
  • List 35
  • Changed 7
  • Source Changed 7
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34238691814
  • 38f17ee5 on github
  • Prev Build on main (#33375490224)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc