v0.6.0
What's New
Congestion Control Selection (--congestion)
Choose your TCP congestion control algorithm per-test:
xfr <host> --congestion bbr # Compare BBR vs default CUBIC
xfr <host> --congestion reno # Classic RenoWorks on both client and server sockets. Invalid algorithms are caught early with a helpful error listing what's available on your kernel.
Live TCP_INFO Polling
RTT and cwnd are now reported every interval during tests, not just in the final result. This enables:
- Real-time TCP metrics in the TUI
- Per-interval
rtt_usandcwndin--json-streamand--csvoutput - Useful for
-t 0(infinite) tests where final results are never sent
Resolves #13.
Bug Fixes
- Congestion errors surfaced - Invalid
--congestionnow fails immediately (non-zero exit) instead of silently producing a zero-byte result - Stale fd cleanup - TCP_INFO file descriptors are cleared on all exit paths, preventing reads from unrelated sockets after fd reuse
- Update banner double "v" - No longer shows
vv0.5.0in update notifications - PSK unwrap panics - Server returns an error instead of panicking on misconfigured PSK
- UDP encode bounds check -
UdpPacketHeader::encode()validates buffer length before writing - Timestamp clock skew - ISO8601/Unix timestamps now derived from monotonic elapsed time
Code Quality
- Replaced 12 hardcoded magic numbers with 6 named constants
Install
# Homebrew
brew install lance0/tap/xfr
# Cargo
cargo install xfr
# Binary (Linux x86_64)
curl -L https://github.com/lance0/xfr/releases/download/v0.6.0/xfr-x86_64-unknown-linux-musl.tar.gz | tar xzFull Changelog: v0.5.0...v0.6.0