Highlights
Fast, accurate TCP teardown (issue #54) — the shutdown() drain on the send path was waiting for bufferbloated send queues to ACK through rate-limited paths, sometimes far past the test duration. Replaced with SO_LINGER=0 (abortive close) on Linux, with tcpi_bytes_acked clamping so abrupt close doesn't overcount discarded tail bytes. macOS keeps graceful shutdown() since it lacks the bytes_acked counter.
Separate send/recv reporting in bidir tests (issue #56) — --bidir now reports per-direction bytes and throughput so asymmetric links no longer collapse into a single misleading number. Visible in plain text, JSON (4 new optional fields), CSV (4 new columns), and the TUI throughput panel (↑ X / ↓ Y).
What's New
Added
- Per-direction reporting in
--bidirresults (#56)
Fixed
- TCP teardown no longer blocks on
shutdown()drain (#54) - Sender-side byte counts clamped to
tcpi_bytes_ackedto remove ~5-10% overcount on bufferbloated/rate-limited links
Install
# Homebrew
brew install lance0/tap/xfr
# Cargo
cargo install xfr
# Download binary
gh release download v0.9.8 --repo lance0/xfrFull Changelog: v0.9.7...v0.9.8