|
DeterministicESPAsyncWebServer v6.27.1
Zero-allocation, bounded-execution async HTTP server for ESP32
|
HTTP/3 server glue - binds UDP to a pool of QUIC + HTTP/3 connections (RFC 9000/9114). More...
#include "ServerConfig.h"Go to the source code of this file.
HTTP/3 server glue - binds UDP to a pool of QUIC + HTTP/3 connections (RFC 9000/9114).
The last piece of the HTTP/3 stack: it owns a fixed pool of QuicConn + H3Conn engines, binds the HTTP/3 UDP port through the transport layer (det_udp), routes each inbound datagram to the right connection by its Destination Connection ID (a new client Initial opens a pool slot), drives the handshake + streams, and pulls the outbound datagrams back onto the wire. A completed HTTP/3 request is surfaced through a single callback; the application answers with quic_server_respond().
Threading (ESP32): det_udp delivers datagrams on the lwIP thread, but requests must be dispatched on the server's worker/main loop, so the UDP handler only copies each datagram into a lock-free ingest ring; quic_server_poll() (called from the loop) drains the ring, runs the engines, and sends replies. The engines therefore only ever run in one context. On host builds there is no UDP; datagrams are injected with quic_server_ingest() and replies captured through an output sink, so the whole server is exercised by shuttling byte buffers between it and a test client.
The pool (QuicConn + H3Conn per slot + the ingest ring) is large, so like HTTP/2 it is a PSRAM-class feature. No heap; fixed storage. This module has no DetWebServer dependency - the request/response seam is a plain callback - so the route-dispatch bridge lives in the server.
Definition in file quic_server.h.