Skip to content

Add bounded HTTP/2 streaming decoding regression coverage - #1314

Merged
fewensa merged 25 commits into
mainfrom
codeon/fewensa/LCL-339/a1-8afd5b510e8f4b42a56563a5202b984e
Sep 30, 2026
Merged

fewensa merged 25 commits into
mainfrom
codeon/fewensa/LCL-339/a1-8afd5b510e8f4b42a56563a5202b984e

Conversation

@fewensa

@fewensa fewensa commented Sep 30, 2026

Copy link
Copy Markdown
Owner

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 http2 test feature.

Verified with:

  • cargo fmt --all -- --check
  • cargo test -p rttp-workspace-tests --test http2_streaming_decoding_transport_matrix --features http2
  • cargo 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)

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.
@chatgpt-codex-connector

Copy link
Copy Markdown

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
fewensa merged commit 5762e11 into main Sep 30, 2026
19 checks passed
@fewensa
fewensa deleted the codeon/fewensa/LCL-339/a1-8afd5b510e8f4b42a56563a5202b984e branch September 30, 2026 11:17
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