Expand description
weida wire protocol v0: framing, CBOR headers, negotiation and QUIC application error codes.
The crate performs no I/O. It parses and encodes byte slices, which makes it directly fuzzable and keeps hostile-input handling in one place. Every decoder treats its input as hostile: lengths are checked before allocation, duplicate map keys are rejected and nesting depth is bounded.
docs/PROTOCOL.md is the normative specification; this crate is its
implementation, and the golden vectors in §8 are asserted byte-for-byte by
the unit tests.
Re-exports§
pub use datagram::LOCAL_MAX_DATAGRAM;pub use datagram::flow_prefix;pub use datagram::split_flow_datagram;pub use frame::FrameKind;pub use frame::MAGIC;pub use frame::MAX_PREAMBLE_LEN;pub use frame::Preamble;pub use frame::PreambleError;pub use frame::encode_frame;pub use frame::encode_preamble;pub use frame::parse_preamble;pub use frame::preamble_bytes;pub use header::CreditHeader;pub use header::CursorHeader;pub use header::CursorLevel;pub use header::DataHeader;pub use header::ErrorHeader;pub use header::FlowHeader;pub use header::HeaderError;pub use header::Hello;pub use header::PathRecord;pub use header::ReportHead;pub use header::ReportMode;pub use header::SubscriptionHeader;pub use header::decode_cursor_record;pub use header::encode_cursor_record;pub use header::filter;pub use header::limits as header_limits;pub use negotiate::Agreed;pub use negotiate::CAPABILITY_DATAGRAM;pub use negotiate::CAPABILITY_PATH_REPORT;pub use negotiate::NegotiateError;pub use negotiate::negotiate;pub use varint::VarintError;pub use varint::decode_varint;pub use varint::encode_varint;pub use varint::varint_len;
Modules§
- codes
- QUIC application error codes used in
CONNECTION_CLOSE,RESET_STREAMandSTOP_SENDING(docs/PROTOCOL.md§7). - datagram
- The DATAGRAM payload of a datagram flow:
varint flow || opaque bytes(docs/PROTOCOL.md§6.9). - frame
- Stream preamble:
[0x57][kind][header_len varint][CBOR header]. - header
- CBOR frame headers.
- negotiate
- Version and capability negotiation.
- varint
- QUIC variable-length integers (RFC 9000 §16).