Nils Andreas Svee
8fd0b803e9
docs: add public crate landing docs
2026-05-18 01:22:08 +07:00
Nils Andreas Svee
e117813578
test: consolidate and prune redundant unit tests
...
Simplify the test suite by merging similar test cases and removing redundant assertions that verify trivial initialization and basic container logic.
2026-05-18 00:16:51 +07:00
Nils Andreas Svee
3b5336a487
refactor(client): use SignedDuration for one-way delay to support negative values
...
Allow one-way delay samples to represent negative values caused by wall-clock skew between client and server. Update CLI output and statistics collection to correctly handle and report these signed durations.
2026-05-17 23:55:01 +07:00
Nils Andreas Svee
64da60d480
feat(proto): enforce maximum length for server fill parameter
...
Move MAX_SERVER_FILL_BYTES to irtt-proto and validate it during decoding to prevent processing oversized parameters.
2026-05-17 22:59:57 +07:00
Nils Andreas Svee
2d6581f31f
refactor(client): encapsulate SignedDuration and enhance its API
...
Hide internal fields to improve type safety and provide helper methods for unit conversions and negative value checks. Fix several feature-gated test compilation issues.
2026-05-17 22:47:16 +07:00
Nils Andreas Svee
bec56d4114
refactor(client): use SignedDuration for effective RTT to support negative values
...
Simplify RttSample by merging signed and unsigned fields into a single SignedDuration for adjusted and effective RTT. This ensures accurate reporting and statistics when server processing time exceeds raw RTT.
2026-05-17 21:30:51 +07:00
Nils Andreas Svee
37de7c96a1
test(client): remove redundant probe/reply tests
2026-05-17 15:22:08 +07:00
Nils Andreas Svee
6c5972aa58
test(client): refactor probes and replies tests into submodules
...
Split the monolithic `probes_replies.rs` file into logical submodules and expose internal packet processing methods to improve test maintainability and coverage of boundary conditions.
2026-05-17 14:54:59 +07:00
Nils Andreas Svee
bed877760e
test: prune client tests that assert private implementation details
2026-05-17 14:48:45 +07:00
Nils Andreas Svee
39d414d588
test: consolidate formatter and hub policy cases
2026-05-17 00:39:23 +07:00
Nils Andreas Svee
00fd0ebb15
test: consolidate duplicate CLI and client config cases
2026-05-17 00:34:18 +07:00
Nils Andreas Svee
fdcdb3b9d7
test(client): remove implementation-coupled client tests
2026-05-16 23:41:11 +07:00
Nils Andreas Svee
bd9ed7eb88
test(client): trim implementation-coupled probe tests
2026-05-16 23:41:11 +07:00
Nils Andreas Svee
72470bd196
test(client): update and expand DSCP negotiation test coverage
2026-05-13 00:37:54 +07:00
Nils Andreas Svee
fec14b2c7c
feat(session): restrict DSCP negotiation to allow only disabling (reset to 0)
2026-05-13 00:37:53 +07:00
Nils Andreas Svee
3dfca1ab5e
refactor(session): implement Display and add documentation for NegotiationRestriction
2026-05-13 00:37:45 +07:00
Nils Andreas Svee
cbe91f2fe0
feat(client): track and report specific negotiation restrictions
...
Replace basic validation with a detailed negotiation process that records specific parameter changes. This allows the client to provide better feedback when a server restricts requested session parameters like duration or DSCP.
2026-05-12 15:18:02 +07:00
Nils Andreas Svee
a7e10358fd
test(client): use fallible packet length helpers in integration tests
2026-05-12 13:05:45 +07:00
Nils Andreas Svee
4549d95d0a
test(client): update test helpers to handle fallible packet length calculations
2026-05-12 13:05:45 +07:00
Nils Andreas Svee
1b79c864d4
refactor(client): propagate ProtoError from recv_buffer_size calculation
2026-05-12 13:05:45 +07:00
Nils Andreas Svee
7ad83ca1f6
refactor: remove logical_seq from client events, session tracking and stats usage
...
It was an attempt at handling integer wraparound more cleanly keeping in mind that we have a continuous mode,
and so we can more easily reach seq > u32::MAX
However after running the numbers, if we run with a interval of 10ms, it's still gonna take ~497 days before we hit integer overflow, so for now it doesn't seem worth to have this extra logic to handle something that'll in 99.9% of cases be purely an edge case
Keeping in mind autorate usage, in sqm-autorate-rust each send loop is 500 ms by default, and the sleep is then 500 ms / 5 reflectors, so our interval is 100 ms. that means it'll take 4970 days or ~13.6 years to reach the limit. Not worth dealing with IMO
2026-05-11 14:56:07 +07:00
Nils Andreas Svee
21bc7805f7
refactor: mark public enums as non-exhaustive to improve API stability
...
Apply the #[non-exhaustive] attribute to ClientError and WarningKind to prevent breaking changes when adding new variants. Handle the catch-all case in the CLI formatter.
2026-05-11 12:33:40 +07:00
Nils Andreas Svee
d6c6e60742
refactor(client): expose len methods for map structures
2026-05-11 10:10:24 +07:00
Nils Andreas Svee
5f6bff5dcb
feat(client): add timestamp to ClientEvent::Warning
...
Include a timestamp when reporting warnings to allow consumers like the machine-readable formatter to provide temporal context for troubleshooting.
2026-05-11 09:50:16 +07:00
Nils Andreas Svee
1a04f44bb5
refactor(client): remove redundant timestamp parameter from poll_timeouts
...
Use internal monotonic time by default and introduce poll_timeouts_at for callers requiring a specific sampled Instant. This simplifies the API for standard usage while maintaining flexibility for external event loops.
2026-05-11 09:33:55 +07:00
Nils Andreas Svee
d8b580a19c
refactor(client): remove redundant timestamp parameter from close method
2026-05-10 23:47:46 +07:00
Nils Andreas Svee
023e85741a
refactor(client): remove redundant timestamp parameter from open method
2026-05-10 23:37:35 +07:00
Nils Andreas Svee
44ffb9557a
fix(client): use correct socket option for IPv4 TOS reception on Linux
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
fe418d650d
refactor(client): upgrade socket2 to 0.6 and use version-specific API
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
c3f2a524a3
fix(client): avoid lossy timing casts
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
a41a1e319d
fix(client): handle close-flagged echo replies
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
48f6cb80ed
fix(proto): require exact echo reply packet length
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ef18bb549c
fix(client): report counter overflows clearly
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
b8d16f3d18
test(client): cover timing validation boundaries
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
2c75e08e30
fix(client): reject invalid timing parameters earlier
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
8374a51054
fix(client): reject runtime-invalid negotiated dscp
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
9977d26a43
perf(client): reuse receive buffer
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
be2f43b07a
chore(client): polish managed runner ergonomics
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
33e2b663b8
fix(client): report read-timeout restore failures
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
07d14328d3
fix(client): clarify duration negotiation rejection
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
860594ebec
fix(client): check probe scheduling arithmetic
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
b53e650c53
fix(client): handle sequence wrap in reply ordering
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
294d97a13d
fix(client): reject invalid negotiated packet length
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
e3bb28c559
fix(client): validate packet length configuration
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
1a98858b7a
fix(client): harden ancillary receive parsing
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
56d3a905ed
fix(client): harden ancillary control message parsing
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
9b5bb46210
feat(client): add Linux kernel receive timestamp metadata
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
212a6e7b35
test(client): cover receive metadata on reply events
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
1c7f0ea22f
chore(client): refine unsafe code restrictions for Linux ancillary features
...
Transition from a global forbid to a scoped deny for unsafe code to accommodate necessary low-level operations in the Linux receive implementation.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
3ff6a07225
feat(client): add Linux ancillary receive metadata
2026-05-10 20:56:43 +07:00