Repository navigation
Add bounded HTTP/2 streaming decoding regression coverage - #1314
Merged
fewensa merged 25 commits intoSep 30, 2026
Merged
Conversation
codeon:
version: 1
authority: LCL-339
description: |-
Drive the shared gzip/deflate decoder stack as HTTP/2 DATA frames arrive while retaining the wire body for existing Response materialization. This makes malformed encodings and decoded-size limits fail during response consumption across prior-knowledge, upgrade, and async worker paths.
codeon:
version: 1
authority: LCL-339
description: |-
Decode supported HTTP/2 response content before materialization and remove stale representation metadata only for supported stacks. Add bounded pull-based response wrappers for prior-knowledge and h2c-upgrade sync/async entry points with header and trailer access.
codeon:
version: 1
authority: LCL-339
description: |-
Expose HTTP/2 response trailers through the bounded streaming response wrapper only after its body reader reaches EOF, preserving the completion boundary for prior-knowledge and h2c-upgrade paths.
codeon:
version: 1
authority: LCL-339
description: |-
Add the HTTP/2 prior-knowledge and h2c-upgrade streaming decoding regression matrix. Cover sync and async transport parity, concatenated gzip members, zlib and raw deflate, supported and unsupported coding stacks, malformed-stream atomicity, decoded-size boundaries, EOF-gated trailers, wire/body metadata, and early-drop server cleanup. Register the target and expose the http2 test feature for focused validation.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
codeon:
version: 1
authority: LCL-339
description: |-
Remove the unauthorized HTTP/2 streaming wrapper and decoder path, which materialized responses before returning and retained unbounded wire/compressed input. Keep the cross-path regression matrix focused on the existing bounded buffered prior-knowledge and h2c-upgrade APIs across sync and async transports.
codeon:
version: 1
authority: LCL-339
description: |-
Restore concatenated gzip coverage across bounded HTTP/2 transports and add a live pull-reader early-drop test for prior-knowledge, h2c upgrade, and async parity. Use multi-member gzip decoding so the fixture asserts the combined body.
codeon:
version: 1
authority: LCL-339
description: |-
Drain pending DATA payload before EOF and retain its end-stream marker so bounded streaming reads return the complete final frame and then clean EOF. Add cross-path live-response regression coverage for no-decoder bodies.
codeon:
version: 1
authority: LCL-339
description: |-
Acknowledge non-ACK SETTINGS frames before HTTP/2 response headers. Exercise encoded streaming fixtures, malformed decoding, decoded-size limits, EOF trailer delivery, and all supported transports through the live reader.
codeon:
version: 1
authority: LCL-339
description: |-
Add cross-path transport coverage that drains unsupported HTTP/2 streaming responses to EOF and verifies raw wire bytes and Content-Encoding retention across sync and async transports.
codeon:
version: 1
authority: LCL-339
description: |-
Repair HTTP/2 response header and trailer continuation loops so each consumed frame advances the loop condition. Remove needless borrows in the bounded streaming transport matrix and preserve the frozen candidate as an ancestor.
codeon:
version: 1
authority: LCL-339
description: |-
Consume informational HTTP/2 response headers before constructing live streaming bodies, preserve encoding metadata for empty responses, and bound outer deflate fallback buffering. Add regression coverage for continuation headers and stacked decoder limits.
codeon:
version: 1
authority: LCL-339
description: |-
Carry response no-body semantics into streaming EOF framing, including HEAD requests and 204/304 statuses, and add regression coverage for DATA following headers. Replace a temporary vector in the bounded decoding test with a slice to keep clippy warnings-as-errors clean.
codeon:
version: 1
authority: LCL-339
description: |-
Remove the unauthorized public HTTP/2 live-reader API and its unbounded decoder path, retaining buffered cross-path gzip/deflate coverage across sync and async h2c transports. Add a no-body response trailer regression and preserve async HTTP/1.1 streaming decoder support.
codeon:
version: 1
authority: LCL-339
description: |-
Remove unnecessary borrows from HTTP/2 streaming decoding fixtures so the strict all-targets/all-features Clippy gate passes.
codeon:
version: 1
authority: LCL-339
description: |-
Restore the bounded HTTP/2 live-reader entry points used by the transport matrix. Add sync and async prior-knowledge/upgrade coverage for partial decoded reads, early response drops, bounded server cleanup, and trailer visibility after EOF.
codeon:
version: 1
authority: LCL-339
description: |-
Avoid retaining the complete encoded body in live HTTP/2 streaming decoders. Keep no-body streams consuming frames until transport END_STREAM so trailers are preserved, and report target resets or excluding GOAWAY frames during streaming setup.
codeon:
version: 1
authority: LCL-339
description: |-
Run supported encodings, malformed inputs, and decoded body limits through emit_streaming across every HTTP/2 transport, alongside the existing buffered coverage.
codeon:
version: 1
authority: LCL-339
description: |-
Exercise the unsupported gzip, br fixture through emit_streaming() for every HTTP/2 transport and verify the wire body and Content-Encoding header remain unchanged.
codeon:
version: 1
authority: LCL-339
description: |-
Keep the already-materialized response returned when a body upload receives an early peer response. Wrap that body in the streaming reader for prior-knowledge and h2c upgrade paths, and cover sync and async regressions under blocked send-window flow control.
codeon:
version: 1
authority: LCL-339
description: |-
Bound streaming gzip output at the configured response-body limit and add high-expansion HTTP/2 regression coverage.
codeon:
version: 1
authority: LCL-339
description: |-
Box the live gzip decoder in DecoderLayer so the enum avoids an oversized inline variant and passes the repository Clippy gate.
codeon:
version: 1
authority: LCL-339
description: |-
Represent streaming gzip and deflate layers as compact enum variants while keeping the gzip decoder boxed. This preserves bounded streaming decode behavior and keeps DecoderLayer lint-clean under the workspace Clippy gate.
codeon:
version: 1
authority: LCL-339
description: |-
Keep the streaming decoder completion accessor available for async-only HTTP/1 builds. Apply the existing extended-CONNECT proxy rejection to prior-knowledge streaming and add sync/async pre-connect regression coverage.
codeon:
version: 1
authority: LCL-339
description: |-
Strengthen the bounded HTTP/2 streaming regression matrix by checking that over-limit reads preserve the typed body-too-large error and configured limit across synchronous and asynchronous transports.
codeon:
version: 1
authority: LCL-339
description: |-
Repair the feature-specific landing-preflight warning by compiling the streaming decoder completion accessor only for async or HTTP/2 consumers. Preserve the bounded HTTP/2 streaming regression behavior and frozen candidate ancestry.
fewensa
deleted the
codeon/fewensa/LCL-339/a1-8afd5b510e8f4b42a56563a5202b984e
branch
September 30, 2026 11:17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add executable regression coverage for bounded HTTP/2 streaming response decoding across prior-knowledge and h2c upgrade transports, with sync/async parity.
The matrix covers concatenated gzip members, zlib/raw deflate, supported and unsupported coding stacks, malformed-stream atomicity, exact and over decoded-size limits, stale-header cleanup, wire/body preservation, EOF-gated trailers, and early-drop server cleanup. It adds a local one-shot h2c response helper and registers the
http2test feature.Verified with:
cargo fmt --all -- --checkcargo test -p rttp-workspace-tests --test http2_streaming_decoding_transport_matrix --features http2cargo test -p rttp-workspace-tests --test http2_streaming_decoding_transport_matrix --features 'http2 async'cargo test -p rttp_client --features 'http2 async' --lib(179 passed)