Skip to content

Accept the exact H2 header-list limit - #153

Merged
SatsAndSports merged 1 commit into
mainfrom
fix/h2-header-list-boundary
Oct 10, 2026
Merged

SatsAndSports merged 1 commit into
mainfrom
fix/h2-header-list-boundary

Conversation

@SatsAndSports

Copy link
Copy Markdown
Owner

Summary

  • make vendored H2 treat SETTINGS_MAX_HEADER_LIST_SIZE as an inclusive maximum
  • accept exactly 32,768 RFC-accounted header-list bytes while continuing to reject 32,769
  • add direct vendor and MONAD client/server boundary regressions
  • bump the vendored fork to h2 0.4.16+monad.2 and update its diff inventory

Rationale

MONAD advertises a 32 KiB maximum and the protocol permits lists within that value. Vendored upstream H2 used >= when marking a decoded list oversized, so an exactly 32,768-byte list was incorrectly rejected. Increasing the configured value would advertise the wrong limit; this instead fixes the decoder comparison.

Verification

  • cargo test --manifest-path vendor/h2/Cargo.toml frame::headers::test
  • cargo test --manifest-path vendor/h2/Cargo.toml --test paused_flow_control
  • focused monad-common client/server boundary tests
  • cargo test
  • make lint
  • make stress-tiny
  • git diff --check

@SatsAndSports
SatsAndSports merged commit a37e560 into main Oct 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant