|
ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
|
Stateful QUIC v1 server connection engine (RFC 9000 / RFC 9001). More...
#include "protocore_config.h"Go to the source code of this file.
Stateful QUIC v1 server connection engine (RFC 9000 / RFC 9001).
One connection: each inbound UDP datagram is parsed into its coalesced packets, header and AEAD protection removed at the right encryption level (Initial keys from the client's Destination Connection ID, Handshake and 1-RTT keys from the TLS handshake this runs), the frames dispatched, the CRYPTO stream reassembled to advance the handshake, packet numbers tracked to generate ACKs, and the outbound Initial / Handshake / 1-RTT packets coalesced back into datagrams. Application streams surface through the callbacks below, so the transport engine has no HTTP dependency.
Transport-free (no lwIP): QuicConnNs::recv takes a received datagram and QuicConnNs::send pulls the next one to transmit, so the engine is host-testable by shuttling byte buffers between a server connection and a client written in the test. protocore_quic_server wires it to protocore_udp.
Scope (a faithful minimal server): QUIC v1 only, no Retry / 0-RTT / key update / connection migration / connection-ID rotation, in-order CRYPTO and stream reassembly, and single-range ACKs. Loss recovery is a Probe Timeout (RFC 9002): QuicConnNs::on_timeout retransmits the outstanding ack-eliciting flight with exponential backoff, reset on acknowledged progress. Fatal handshake / frame errors emit a transport CONNECTION_CLOSE (RFC 9000 sec 19.19) instead of timing out. Small packets are padded to the header-protection minimum (RFC 9001 sec 5.4.2). Fixed storage, no heap.
Definition in file quic_conn.h.