Tracks the 23-test h2-conformance matrix from #66.\n\nCurrent first failure is a SETTINGS ACK carrying a payload: the generic raw server path ignores it and the dedicated conformance validator is bypassed by net.connect routing. Additional missing validation includes SETTINGS ranges, WINDOW_UPDATE size and zero increments, stream-zero HEADERS and DATA, fixed-length PRIORITY and RST_STREAM, idle-stream RST_STREAM, and CONTINUATION without HEADERS.\n\nAcceptance criteria:\n- use one inbound frame validator across generic and conformance raw transports\n- validate frame length, flags, stream id, settings ranges, and stream state with protocol-correct errors\n- keep unknown extension frames ignored as required\n- pass all 23 byte-identical h2-conformance tests in a maintained focused tranche\n- remove the expectation only after the full tranche is green\n\nParent tracker: #66\nRelated flow-control work: #422
Bun parity: share raw HTTP/2 frame validation and pass h2 conformance
#426Implemented locally in b11bb50 (fix(runtime): validate incremental HTTP2 frames). Added a shared role/state-aware inbound validator used by ordinary raw server and raw client paths before DATA delivery, covering SETTINGS ACK structure and ranges, PING, WINDOW_UPDATE, DATA/HEADERS stream zero, PRIORITY/RST fixed lengths, idle RST, CONTINUATION sequencing, maximum frame size, unknown-frame tolerance, reserved-push state, and receive-window enforcement. Local SETTINGS snapshots are applied FIFO on ACK with effective stream-window deltas. The filename-specific h2-conformance handler/gate is gone.\n\nVerification: focused validator/ACK contracts 2/2; unchanged h2-conformance.test.ts 23/23; unchanged padding file 7/7 in the combined exact selector; cumulative bootstrap HTTP2 33/33; Zig fmt and diff checks green. Its FAIL expectation was removed in the same commit. Push remains pending only because github.com DNS is still failing; keep this issue open until the commit is visible remotely.
Completed on main in 7b12502.
The shared native HTTP/2 path now validates frame lengths, flags, stream IDs, SETTINGS values, stream state, CONTINUATION sequencing, header rules, and extension-frame ignore behavior with protocol-correct errors. It also keeps HPACK state synchronized before stream-level rejection.
Validation on the unmodified Bun fixtures:
- h2-conformance.test.ts: 23 pass / 0 fail
- full five-file Debug matrix: 329 pass / 6 upstream-authored memory-leak skips / 0 fail / 12,246 assertions
- full five-file ReleaseFast matrix: 329 pass / 6 upstream-authored memory-leak skips / 0 fail / 12,246 assertions
No test files, assertions, workloads, deadlines, or skips were changed.
Sign in to comment on this issue.