Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 06 Feb 19:21
· 14 commits to master since this release

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 Reno

Works 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_us and cwnd in --json-stream and --csv output
  • Useful for -t 0 (infinite) tests where final results are never sent

Resolves #13.

Bug Fixes

  • Congestion errors surfaced - Invalid --congestion now 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.0 in 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 xz

Full Changelog: v0.5.0...v0.6.0