ReviewOS

home-lang/home

Bun parity: share raw HTTP/2 frame validation and pass h2 conformance

#426
Closed chris opened this 10 days ago ·
10 days ago

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

10 days ago

Implemented 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.

10 days ago

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.