trillium-http-v1.2.0
·
135 commits
to main
since this release
Added
H3Connection::process_inbound_bidi_with_reset— process a bidi request stream with a caller-supplied closure that issuesRESET_STREAMon stream-level protocol errors, as required by RFC 9114 §4.1.2.H3Connection::process_inbound_uni_with_close— process a uni stream with a caller-supplied closure that firesCONNECTION_CLOSEwhile the recv stream is still alive, avoiding aFINAL_SIZE_ERRORrace with the peer's response to STOP_SENDING.
Deprecated
H3Connection::process_inbound_bidi— useprocess_inbound_bidi_with_resetinstead.H3Connection::process_inbound_uni— useprocess_inbound_uni_with_closeinstead.
Fixed
h3spec identified the following minor violations in trillium's h3 implementation, primarily focused on error handling. All of these are fixed in 1.2.0:
- RFC 9114 §4.1.2 — stream-level errors (notably
H3_MESSAGE_ERROR) MUST RST the bidi stream. - RFC 9114 §4.1.1 / §4.2 / §4.3.1 — malformed messages (duplicated pseudos, unknown pseudos, uppercase header bytes) are
H3_MESSAGE_ERROR. - RFC 9114 §4.3.1 — schemes with mandatory authority component (http/https) require
:authorityorHoston non-CONNECTrequests. - RFC 9114 §6.2.1 — first frame on the peer's control stream must be
SETTINGS. Non-SETTINGSfirst frame OR a malformed first frame →
H3_MISSING_SETTINGS. - RFC 9114 §6.2.1 + RFC 9204 §4.2 — closure of control or QPACK streams is
H3_CLOSED_CRITICAL_STREAM. - RFC 9114 §7.2.1 / §7.2.2 / §7.2.4 / §7.2.5 — control stream must reject
DATA,HEADERS,PUSH_PROMISE, secondSETTINGS, and the WebTransport
0x41signal asH3_FRAME_UNEXPECTED. - RFC 9114 §4.1 — first-frame decode failure on a request bidi stream is
H3_FRAME_UNEXPECTED. - RFC 9204 §3.1 — invalid static-table index in a field-line representation is
QPACK_DECOMPRESSION_FAILED. - RFC 9204 §4.1.3 — Set Dynamic Table Capacity exceeding the limit is
QPACK_ENCODER_STREAM_ERROR. - RFC 9204 §4.4.3 — Insert Count Increment of 0 is
QPACK_DECODER_STREAM_ERROR. - RFC 9204 §6 — QPACK errors are connection-level, not stream-level.
- RFC 9114 §8.1 / RFC 9204 §6 — correct close error code on the wire.