Releases: veeso/suppaftp
Releases · veeso/suppaftp
suppaftp 8.0.2
8.0.2
Released on 12/02/2026
- PR 135: Fixed unsafe undefined behavior in tokio
AsyncNativeTlsStream::tcp_stream()which could cause use-after-free / double-free. - PR 136: Fixed
data_connection_openflag being set before the data stream was actually created, which could incorrectly reportDataConnectionAlreadyOpenon failure. - PR 137: Fixed infinite loop in async
feat()when the server disconnects mid-response. - PR 138: Fixed infinite loop in
read_response_in()on multiline responses when the server disconnects. - PR 139: Fixed MLSX parser to accept
cdirandpdirentry types as directories (per RFC 3659). - PR 140: Fixed MLSX
unix.modeparser to accept 4-digit octal modes (e.g.0755). - PR 141: Fixed
abort()hanging when server sends 226 directly instead of 426+226. - PR 142: Fixed DOS LIST parser to handle comma-separated file sizes (e.g.
1,234,567). - PR 143: Fixed
parse_lstimeto adjust year for future dates (matches GNU ls behavior). - PR 144: Fixed DOS time parser to handle space before AM/PM (e.g.
01:30 PM). - PR 145: Fixed active mode to use EPRT command for IPv6 connections.
- PR 146: Replaced
unwrap()panics on server-controlled data (EPSV, SIZE, MDTM) with proper error handling. - PR 147: Removed redundant
feature = "async-std"in cfg gate. - PR 148: Fixed
doc(cfg)attribute onSecureErrorvariant to show bothsecureandasync-securefeatures. - PR 133: Moved crates to
crates/folder. - PR 134: Changed test container image to
delfer/alpine-ftp-server.
suppaftp 8.0.1
8.0.1
Released on 18/01/2026
- Fixed docs.rs build
suppaftp 8.0.0
8.0.0
Released on 18/01/2026
- Issue 131: Added new features to choose the backend for
rustls:rustls-ring: useringas crypto backend (default)rustls-aws-lc-rs: useaws-lc-rsas crypto backend- Removed
rustlsfeature. Use eitherrustls-ringorrustls-aws-lc-rsinstead. - Removed
async-rustlsfeature. Use eitherasync-std-rustls-ringorasync-std-rustls-aws-lc-rsinstead. - Removed
tokio-rustlsfeature. Use eithertokio-rustls-ringortokio-rustls-aws-lc-rsinstead.
Caution
In case you're using rustls, tokio-rustls, or async-rustls features, you need to update your Cargo.toml
accordingly.
suppaftp 7.1.0
7.1.0
Released on 07/01/2026
- Issue 128
- Made
FileTypeenum public - Added
File::file_type()method to retrieve the file type - Deprecated
File::from_dos_line,File::from_mlsx_line, andFile::from_posix_linemethods in favor of
ListParser::parse_dos,ListParser::parse_mlst,ListParser::parse_mlsd, andListParser::parse_posix
respectively.
- Made
- Issue 127: Prevent commands which require a data connection to be executed if there is already a data connection open.
suppaftp 7.0.7
suppaftp 7.0.6
suppaftp 7.0.5
7.0.5
Released on 03/10/2025
- Update
chronoversion to0.4.25to guarantee compatibility withand_utcmethod.
suppaftp 7.0.4
7.0.4
Released on 22/09/2025
- Exported
TlsStreamtypes for implementing functions that use the retrieved stream.TlsStreamfor sync ftp.AsyncStdTlsStreamfor async-std ftp.TokioTlsStreamfor tokio ftp.
suppaftp 7.0.0
7.0.0
Released on 31/08/2025
- Breaking changes:
- Removed
asyncfeature; use eitherasync-stdortokio. - Removed
async-native-tls; use eitherasync-std-async-native-tls(forasync-std) ortokio-async-native-tls(fortokio) instead. - Renamed
async-native-tls-vendoredtoasync-std-async-native-tls-vendored. - Removed
async-default-tls. - Removed
default-tls - Renamed
async-rustlstoasync-std-rustls.
- Removed
- Tokio support:
- Added tokio support along with async-std.
- Use
tokiofeature to use tokio - Use
tokio-rustlsfeature to use tokio with rustls - Use
tokio-async-native-tlsfeature to use async-native-tls with tokio
- Custom Data commands:
- Added
custom_data_commandto perform the execution of custom data commands. - Added
close_data_connectionto close theDataStreamonce consumed after executing custom data commands. - Made
get_lines_from_streampublic to easily read String lines from theDataStream.
- Added
suppaftp 6.3.0
6.3.0
Released on 05/06/2025
-
Issue 85: Fixed
retrmethod signature on theAsyncFtpStreamto allow passing a closure taking the stream reader.stream .retr("test.txt", |mut reader| { Box::pin(async move { let mut buf = Vec::new(); reader.read_to_end(&mut buf).await.expect("failed to read stream"); Ok((buf, reader)) }) }) .await
-
Issue 108: fixed FEAT command response parser