refactor(client): commit probe sends transactionally

This commit is contained in:
Nils Andreas Svee committed 2026-08-04 01:04:42 +07:00
1 parent b5d0b1e52e
commit 9bc2ac90b3
6 files changed
+901 -169

No files matched your search

+17
View File
@@ -152,6 +152,16 @@ pub enum ClientError {
/// can be reused.
#[error("wire sequence {seq} is still pending")]
PendingSequenceCollision { seq: u32 },
/// A prepared probe no longer matches the session's next wire sequence.
///
/// Prepare the probe again after any intervening successful send.
#[error(
"prepared probe sequence {prepared_seq} is stale; next wire sequence is {next_wire_seq}"
)]
StalePreparedProbe {
prepared_seq: u32,
next_wire_seq: u32,
},
/// Reserving memory required by an operation failed before any datagram was
/// sent or logical protocol state was changed.
#[error("failed to reserve memory for {operation}: {source}")]
@@ -160,6 +170,13 @@ pub enum ClientError {
#[source]
source: TryReserveError,
},
/// UDP reported successful acceptance of a datagram with an unexpected
/// byte count.
///
/// The send is committed locally before this transport invariant failure
/// is returned because the kernel reported success.
#[error("UDP accepted {actual} bytes for a {expected}-byte datagram")]
DatagramLengthMismatch { expected: usize, actual: usize },
/// Client configuration failed validation before the requested operation.
///
/// The reported reason names a value that must be changed before retrying.