pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/net/xfr
Module Name: pkgsrc
Committed By: pin
Date: Thu Apr 23 13:14:25 UTC 2026
Modified Files:
pkgsrc/net/xfr: Makefile cargo-depends.mk distinfo
Log Message:
net/xfr: update to 0.9.10
v0.9.10
Fixed
TCP teardown no longer hangs under rate-limited paths (#54) — the v0.9.8 SO_LINGER=0 fix didn't take effect when the send loop was parked in stream.write().await under heavy backpressure (tc rate
limiting, slow peers, MPTCP subflows filling). send_data and send_data_half now race the pending write() against cancel and deadline in a biased tokio::select!, so either signal breaks the loop and
lets SO_LINGER=0 do its job. Confirmed by @matttbe against his MPTCP + tc reproducer.
TUI elapsed time stays live during data gaps (#62) — app.elapsed was only updated when the server's Interval progress message arrived. On lossy paths that starved the control channel, the elapsed
counter could freeze for several seconds, creating the impression of a "stall" even though the TUI was still redrawing at 20 Hz. The loop now refreshes elapsed from the wall clock every iteration.
Pause handling shifts start_time forward by the paused duration on resume, so the counter excludes paused time. Reported by @brettowe.
Infinite-duration (-t 0) TUI now shows a live elapsed counter — same fix covers this.
Added
Client/server version in the Configuration panel (#62) — the TUI now shows xfr/<client> ↔ <server> so cross-version test pairings are obvious at a glance.
Changed
TUI jitter line shows latest + smoothed together (#48 follow-up) — running display now reads Jitter: 0.02 ms (10s: 0.03 ms) so the instantaneous per-interval value and the 10-second rolling mean
are side-by-side. Resolves the confusion where the rolling mean could stay above any single sample's value, making the live display look inconsistent with the final. Completed state still shows just
the authoritative final.
Security
Sanitize server-advertised version before rendering — the Hello.server field crosses a network trust boundary and was being rendered verbatim into the TUI. A hostile or compromised server could
send ANSI escape sequences or an oversized string and have the user's terminal act on them. Control characters are now stripped, length is capped at 32, and empty/all-control inputs fall back to
(unknown).
Bump rustls-webpki 0.103.12 → 0.103.13 (RUSTSEC-2026-0104) — reachable panic in CRL parsing.
v0.9.9
Added
Max jitter and packet size in UDP summary (#48 follow-up) — final UDP summary now reports Jitter Max (peak of the RFC 3550 running estimate) alongside the average, plus Packet Size (UDP payload
bytes). Surfaced in plain text and JSON. Requested by @brettowe for NFS UDP packet-size tuning context.
-w short alias for --window (#60) — matches iperf3 muscle memory.
Changed
Bare-integer duration arguments mean seconds (#61) — -t 10, --max-duration 60, --rate-limit-window 30, and discover --timeout 5 now accept plain integers as seconds. Unit-suffixed forms (10s,
1min, 500ms) continue to work unchanged.
Side effect: --rate-limit-window now rejects zero (0, 0s, 0ms) — 0s was previously accepted and would later panic in the rate-limiter cleanup task because tokio::time::interval requires a
non-zero duration. Other duration flags still accept 0 for their existing meanings (-t 0 is infinite).
Smoothed TUI jitter reading (#48) — the UDP stats panel shows jitter averaged over a 10-second rolling window rather than raw per-second samples. Server data pipeline is unchanged; display is
smoothed. While running, the label reads Jitter (10s):; on completion it reverts to Jitter: with the authoritative final value from the server.
Fixed
Duplicate receive-error log on the server (#54) — tcp::receive_data/receive_data_half each warned at the read-error site, and the caller warned again on the returned Err. The inner warn! is
removed so receive errors log exactly once. Reported by @matttbe.
Default to kernel TCP autotuning (#60) — xfr no longer forces SO_SNDBUF/SO_RCVBUF to 4 MB on either side by default. Both ends let the kernel autotune unless the user passes -w/--window. When
set, the client's value propagates to the server over the control protocol so both sides apply the socket option symmetrically (matching iperf3). Reported by @matttbe.
Caveats:
Loopback / intra-host benchmark numbers may decrease by roughly 10% — this is expected; the previous numbers were inflated by the oversized app-applied buffer.
On high-RTT paths, very short tests (e.g. -t 1s at high bitrate) may now show ramp-up-limited throughput in the final summary because kernel autotune takes a handful of RTTs to grow the
window. Use a longer -t or pass an explicit -w to skip autotune. Note that -O/--omit only hides early intervals from output — the server's final summary is computed over the full test duration.
Explicit window sizes above c_int::MAX (≈2.1 GB on 64-bit) are now rejected with InvalidInput instead of silently wrapping before setsockopt.
Removed
Library API: pre-1.0 break — TcpConfig::high_speed() and TcpConfig::with_auto_detect() are gone; construct TcpConfig directly with the fields you want set. The HIGH_SPEED_BUFFER and
HIGH_SPEED_WINDOW_THRESHOLD constants (which were private) are also removed. Downstream code that constructs ControlMessage::TestStart, protocol::UdpStats, or tui::app::App by name now needs to
supply the new fields (window_size, jitter_max_ms, packet_size, jitter_history); all are additive with sensible defaults.
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 pkgsrc/net/xfr/Makefile \
pkgsrc/net/xfr/cargo-depends.mk pkgsrc/net/xfr/distinfo
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/net/xfr/Makefile
diff -u pkgsrc/net/xfr/Makefile:1.8 pkgsrc/net/xfr/Makefile:1.9
--- pkgsrc/net/xfr/Makefile:1.8 Mon Apr 20 12:25:25 2026
+++ pkgsrc/net/xfr/Makefile Thu Apr 23 13:14:25 2026
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.8 2026/04/20 12:25:25 pin Exp $
+# $NetBSD: Makefile,v 1.9 2026/04/23 13:14:25 pin Exp $
-DISTNAME= xfr-0.9.8
+DISTNAME= xfr-0.9.10
CATEGORIES= net
MASTER_SITES= ${MASTER_SITE_GITHUB:=lance0/}
GITHUB_TAG= v${PKGVERSION_NOREV}
Index: pkgsrc/net/xfr/cargo-depends.mk
diff -u pkgsrc/net/xfr/cargo-depends.mk:1.8 pkgsrc/net/xfr/cargo-depends.mk:1.9
--- pkgsrc/net/xfr/cargo-depends.mk:1.8 Mon Apr 20 12:25:25 2026
+++ pkgsrc/net/xfr/cargo-depends.mk Thu Apr 23 13:14:25 2026
@@ -1,4 +1,4 @@
-# $NetBSD: cargo-depends.mk,v 1.8 2026/04/20 12:25:25 pin Exp $
+# $NetBSD: cargo-depends.mk,v 1.9 2026/04/23 13:14:25 pin Exp $
CARGO_CRATE_DEPENDS+= adler2-2.0.1
CARGO_CRATE_DEPENDS+= aho-corasick-1.1.4
@@ -259,7 +259,7 @@ CARGO_CRATE_DEPENDS+= rustls-native-cert
CARGO_CRATE_DEPENDS+= rustls-pki-types-1.14.0
CARGO_CRATE_DEPENDS+= rustls-platform-verifier-0.6.2
CARGO_CRATE_DEPENDS+= rustls-platform-verifier-android-0.1.1
-CARGO_CRATE_DEPENDS+= rustls-webpki-0.103.12
+CARGO_CRATE_DEPENDS+= rustls-webpki-0.103.13
CARGO_CRATE_DEPENDS+= rustversion-1.0.22
CARGO_CRATE_DEPENDS+= ryu-1.0.23
CARGO_CRATE_DEPENDS+= same-file-1.0.6
Index: pkgsrc/net/xfr/distinfo
diff -u pkgsrc/net/xfr/distinfo:1.8 pkgsrc/net/xfr/distinfo:1.9
--- pkgsrc/net/xfr/distinfo:1.8 Mon Apr 20 12:25:25 2026
+++ pkgsrc/net/xfr/distinfo Thu Apr 23 13:14:25 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.8 2026/04/20 12:25:25 pin Exp $
+$NetBSD: distinfo,v 1.9 2026/04/23 13:14:25 pin Exp $
BLAKE2s (adler2-2.0.1.crate) = 4d391e0fcde91c7435ee9a5503fee4a5346f549f1b45e482ce3e1e151d90f8f5
SHA512 (adler2-2.0.1.crate) = 555b2b7ba6f8116acccd0bcd16ed34cc78162c81023cff31a8566ffcd456c03832089fca2d5b668ceaac4fe8f922d31aa9c487f226a36cace294ff4a219bd91d
@@ -777,9 +777,9 @@ Size (rustls-platform-verifier-0.6.2.cra
BLAKE2s (rustls-platform-verifier-android-0.1.1.crate) = c8d0240ebc3809d2fbfd7805badb53674ced7d89a17a1cd06880a158d2227cb6
SHA512 (rustls-platform-verifier-android-0.1.1.crate) = f3f21b88b448f46e08da4303d225f10765d21f2397d4fbe44d5f9cf9da5ced84fa5adc5881f1db66a324cef818537e4a79bad2260b8027894029ba7e6ec16533
Size (rustls-platform-verifier-android-0.1.1.crate) = 13919 bytes
-BLAKE2s (rustls-webpki-0.103.12.crate) = 513c0c97067e9e91f4c84897c02e161198a14fc5f33f7fe68b8919baaadba4ce
-SHA512 (rustls-webpki-0.103.12.crate) = 0673be70c4378356ceb6839e5c56befaa1303c854da63e29583bdfdf1049c5f9a817b070f67c4849cad4c207d504dc6d739dd013b5bb311d02b3eee748b5de73
-Size (rustls-webpki-0.103.12.crate) = 87202 bytes
+BLAKE2s (rustls-webpki-0.103.13.crate) = 07e998271fef95dc3756ff38b08abded4d7178bef0b7dee9df82b5caf16d6b4c
+SHA512 (rustls-webpki-0.103.13.crate) = 367829afe3432a9d80bb4da82e075dd05bc37ecaf801c0944e1af9184565d743abf92d59e6fd433e7f051daac15099273b823e6f417ec46b6b5da43bbdad59b6
+Size (rustls-webpki-0.103.13.crate) = 87513 bytes
BLAKE2s (rustversion-1.0.22.crate) = 94885d422b9c942ceab679e86d0a2b8e6f322f655091475a6a475f0b796f48b9
SHA512 (rustversion-1.0.22.crate) = 7929352df3e5279ac88cebb26ca89bb13c755f46986d2d1f514d18a3239a63638bf64f8ff153920569d173185d988d692ee676335afba0bf72d47f71babe0e15
Size (rustversion-1.0.22.crate) = 21096 bytes
@@ -1275,9 +1275,9 @@ Size (writeable-0.6.2.crate) = 25181 byt
BLAKE2s (x509-parser-0.18.1.crate) = a5f2838a9880a6e075ead6b25c4078314403bbd5f9d59df631663b87ee4edee4
SHA512 (x509-parser-0.18.1.crate) = a30af92885d157b837832b7a3242fc8dbe5eacbce97ce5cb92a8c5e948324ec38150ca709734eb191a914f4f34d4d521ba313b72a57541a62cb254e8808535ef
Size (x509-parser-0.18.1.crate) = 102625 bytes
-BLAKE2s (xfr-0.9.8.tar.gz) = 605fa150bb0db37dbd27377717d9cfa892dbdfcecd14d7f086b8583063ffebde
-SHA512 (xfr-0.9.8.tar.gz) = 82cf7cf7f69b60ba21e200e6ef9641c8243c5d808c7346663921ca32fa53a80553728567d2ace0f59111d805d0c425961e2f79a1daf575f7cea981dd8e1d17e6
-Size (xfr-0.9.8.tar.gz) = 771539 bytes
+BLAKE2s (xfr-0.9.10.tar.gz) = 4dff1da1677d54887ef257335abf93402e46a897e6930951f5d542528a8b3f2c
+SHA512 (xfr-0.9.10.tar.gz) = b133d61044b8890d18acdb846b7164ab914f8bcdfc16647dc5f61c35c33a24c0c4408f7df1397e418cfbc5dc723595c6a5cd2326d6f1a98433b7c906c72d6f9a
+Size (xfr-0.9.10.tar.gz) = 784738 bytes
BLAKE2s (yasna-0.5.2.crate) = 25391034f1d4c9715add3175629a012024dc2a34fa85b4dc85c4dce2c100742a
SHA512 (yasna-0.5.2.crate) = 7532b6d06b34b0a5e2b769c5d2647f910bec481d98482bf9cea212f1bd1466336d7cb117d0c2e240e7673b2825f1d091619f79814bad836d25cf3a6ca2be63e5
Size (yasna-0.5.2.crate) = 34859 bytes
Home |
Main Index |
Thread Index |
Old Index