fix(http2): bound retained response headers#1000
Conversation
|
Independent current-head review summary ( Two read-only reviewers examined this exact head from complementary security/lifecycle and public-contract perspectives. Both reported PASS with no blocker, major, or minor findings. Verified points:
Review method: static inspection only; no local build or tests were run. GitHub Actions remains the executable validation gate. |
4cb8e13 to
c071d8d
Compare
|
CI diagnosis and current-head update The original head built successfully on all four C++ matrix jobs, but the new synthetic client/server nghttp2 regression failed deterministically at its first transfer ( Head
An independent security/lifecycle re-review passed this exact head and specifically verified the nghttp2 state preconditions, frame layout, byte-order portability, pointer lifetimes, and continued-session assertion. A second independent contract review is also being completed while the replacement CI run executes. |
|
Updated independent current-head review summary ( After the CI-driven test-harness correction, two independent read-only reviewers re-examined this exact head from security/lifecycle and public-contract perspectives. Both reported PASS with no blocker, major, or minor findings. In addition to the production guarantees in the earlier review, they specifically verified:
Review method: static inspection only. The replacement GitHub Actions run is the executable validation gate. |
|
Second CI diagnosis and final test-harness correction The client-only replacement still failed at its preliminary drain because Head Two independent reviewers passed this exact rebased head. They verified the corrected nghttp2 termination condition, absence of an infinite positive-output source, exact RST wire parsing, follow-up stream viability, the full production security/API contract, and preservation of both #997 and #998 documentation during rebase. The new GitHub Actions run is the remaining validation gate. |
c071d8d to
682fc71
Compare
|
CI diagnosis for run This PR does not modify |
Description
Bound retained HTTP/2 response headers per stream by both field count and aggregate name/value bytes. An over-limit peer now fails only the offending stream with
ENHANCE_YOUR_CALM, while callers receiveEMSGSIZEand sibling streams remain usable.Type of Change
Related Issues
Closes #998
Related to #986
Changes Made
Core Changes
RST_STREAM(ENHANCE_YOUR_CALM)and return nghttp2's stream-local temporal callback failure.EMSGSIZEfor the waiting client.API Changes (if applicable)
h2_client_configandh2_session_configgain two trailing, source-compatible fields:Testing
Unit Tests
Test Results
Static review only; local builds and tests were intentionally not run. GitHub Actions is the executable validation source for this PR.
Focused coverage includes independent count and byte boundaries, oversized fields, informational/final/trailer accounting, config propagation and legacy aggregate initialization, plus a raw nghttp2 two-stream reset regression.
Checklist
Code Quality
Documentation
Testing
Compatibility
Additional Notes
Two independent static reviews passed against the exact rebased head before opening this PR. No local compilation or test execution was performed.
Reviewer Guidance
Areas requiring special attention: