Skip to content

Tags: jvz-devx/nntp-rs

Tags

v0.3.0

Toggle v0.3.0's commit message
Release v0.3.0: fix binary data corruption, harden PAR2/CRC verificat…

…ion, propagate decompression errors

Breaking changes:
- YencDecoded::verify_crc32() returns Option<bool> (None = no CRC available)
- NntpClient::maybe_decompress() returns Result<Vec<u8>> instead of silently
  falling back to raw data on decompression failure

Bug fixes:
- Binary reader now strips NNTP line terminators before appending to payload
- PAR2 slices with missing IFSC checksums reported as damaged instead of skipped
- PAR2 verification with no IFSC packet and failed MD5 now marks all slices damaged
- ArticleAssembler avoids unnecessary clone for multipart decoded data

Safety hardening:
- 64 MB limit on compressed blocks (prevents OOM)
- PAR2 packet length validation (prevents arithmetic underflow)
- PAR2 zero slice_size rejection (prevents division-by-zero)
- BandwidthLimiter panics on zero rate (prevents division-by-zero)
- LruHeaderCache uses wrapping_add for access counter

See CHANGELOG.md for full details.

v0.2.1

Toggle v0.2.1's commit message
Set minimum dependency versions to fix -Z minimal-versions CI

Bump floor versions for all dependencies to prevent resolution to
ancient crates that don't compile on modern stable Rust (e.g.,
flate2 1.0.0 pulling in gcc 0.3.3 with #![feature(convert)]).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v0.2.0

Toggle v0.2.0's commit message
Initial release v0.2.0

Async NNTP client library for Rust with TLS, compression, connection
pooling, article parsing, yEnc encoding, NZB parsing, and PAR2
verification. See CHANGELOG.md for details.