mirror of
https://github.com/zap-proto/go.git
synced 2026-10-30 15:05:00 +00:00
Replaces the old one-QUIC-stream-per-Conn + ZAP-framing-on-top model. quicConn
and quicStream satisfy transport.Conn/transport.Stream natively:
- Call/CallContext open a fresh QUIC stream, write one length-prefixed request
frame, half-close send, read the response frame, done. Concurrent calls run
on concurrent QUIC streams => zero head-of-line blocking.
- OpenStream opens a QUIC stream; Send/Recv are length-prefixed frames on it;
CloseSend = QUIC send-side close; Context cancels on stream/conn end.
- Server accept-loops QUIC streams; the first frame's opener byte selects
unary-dispatch (write response, close) or StreamHandler.
Still always PQ: TLS 1.3 pinned to X25519MLKEM768 (PQ X-Wing) via PQTLSConfig.
Dial returns transport.Conn; Listen/ListenStream serve dispatch+stream.
Adds TestConcurrentCalls_QUIC (64 in-flight, distinct payloads) proving the
no-HOL property.