DeterministicESPAsyncWebServer v6.27.1
Zero-allocation, bounded-execution async HTTP server for ESP32
Loading...
Searching...
No Matches
quic_conn.h File Reference

Stateful QUIC v1 server connection engine (RFC 9000 / RFC 9001). More...

#include "ServerConfig.h"

Go to the source code of this file.

Detailed Description

Stateful QUIC v1 server connection engine (RFC 9000 / RFC 9001).

One QuicConn drives a single QUIC connection: it parses each inbound UDP datagram into its coalesced packets, removes header + AEAD protection at the right encryption level (Initial keys from the client's Destination Connection ID; Handshake and 1-RTT keys from the TLS handshake it runs via quic_tls), dispatches the frames, reassembles the CRYPTO stream to advance the handshake, tracks packet numbers to generate ACKs, and coalesces the outbound Initial / Handshake / 1-RTT packets back into datagrams. Application streams are surfaced to HTTP/3 (h3_conn) through a small callback + send API, so the transport engine has no HTTP dependency.

It is transport-free (no lwIP): quic_conn_recv() takes a received datagram and quic_conn_send() pulls the next datagram to transmit, so the engine is host-testable by shuttling byte buffers between a server QuicConn and a client written in the test. quic_server wires it to det_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): quic_conn_on_timeout() retransmits the outstanding ack-eliciting flight (handshake CRYPTO and 1-RTT streams) 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.

Author
Douglas Quigg (dstroy0)
Date
2026

Definition in file quic_conn.h.