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
b508a94198
build: bump version to 0.2.0
2026-05-11 15:11:58 +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
8d1d0f50de
style(client): reformat imports in test files
...
Collapse multi-line import statements into single lines to improve code legibility and maintain consistent formatting across test suites.
2026-05-11 10:13:06 +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
2258509021
chore: bump version to 0.1.1 across all crates
...
Update workspace members and dependencies to version 0.1.1 to prepare for a new release.
2026-05-10 21:17:22 +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
renovate[bot]
3eaaeee408
fix(deps): update socket dependencies
2026-05-10 20:56:43 +07:00
renovate[bot]
f474632f4c
fix(deps): update rust crate thiserror to 2.0.18
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
416e5b43ba
build: add package metadata to member crates for publishing
...
Include descriptions, keywords, categories, and workspace-inherited fields (repository, homepage, readme) to prepare crates for distribution on crates.io.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
2368e0b3ee
build: centralize internal dependencies using workspace inheritance
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
afb20b6625
fix(client): retry real backend startup on port races
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
Nils Andreas Svee
40dc41dc39
feat(client): add receive datagram abstraction
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
25d5c1db1c
feat(client): add receive metadata scaffold
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ed62a5c80c
test: refactor real backend support for reliable output capture
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
706e3bd1e1
test: make IPv6 socket option tests more robust
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
2a11e77cfd
chore: remove unused interop feature flag
2026-05-10 20:56:43 +07:00