Repository navigation
Conversation
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
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.
What
Complete the detached WebTransport Server API while ordinary HTTP/3 requests and GOAWAY continue. Add bounded session admission, independent stream opening and routing, 22 Quinn integration tests, a tested request budget in the example, and the complete patch inventory.
Why
runewarp/runewarp #255 needs Server-opened bidirectional streams on an existing H3 connection. This ports the #251 prototype into the fork, following the #253 branch structure and #254 carrier decision. The PR is stacked on
runewarp/webtransport-client; Runewarp integration and application policy remain outside this change.Review fixes let applications evict silent classifiers during deadline handling or shutdown, restore ordinary incomplete-request errors before WT identification, correct stale ownership documentation, and bound resolver task creation in the example.
How
server::newreturns an ordinary request driver and a cloneableAcceptor. Admission validates negotiation, draft and request shape, reserves capacity across response writes, and rejects invalid or over-cap requests with 400/429. A session-specific opener carries the full CONNECT ID and shared terminal state. Each open future has independent backend pending state.Bounded classifiers route exact session IDs and skip leading unknown H3 frames incrementally.
evict_pending_streams()drops all currently pending classifiers, releases their request tracking and frees slots, buffers and wakers. Unclassified ordinary/unknown streams useH3_REQUEST_REJECTED; identified WT streams retainWT_SESSION_GONE. Applications own prefix and whole-connection deadlines. GOAWAY semantics remain unchanged. EOF before identifying WT usesH3_REQUEST_INCOMPLETE, including empty ordinary requests without WT enabled.The example reserves one of 32 per-connection handler permits before spawning and rejects excess requests without blocking the driver or spawning permit waiters. A task set reaps and aborts tracked handlers. Its Quinn regression verifies saturation, independent WT echo progress, permit recovery, ordinary response recovery and connection-loss cleanup. CONNECT close/drain processing remains bounded, validates through peer FIN and resets on cancelled writes. Unsupported detached WT uni streams are rejected, and core uni headers consume buffered varints without waiting for another read.
The supported Runewarp profile remains Draft07. Detached uni dispatch, session datagram routing, subprotocol negotiation and full modern flow control remain deferred.
PATCHES.mdrecords source commits, review fixes, backend requirements and deliberate deferrals for overlapping security PRs hyperium#366, hyperium#377 and hyperium#378. Encoded-frame/parser risks and Quinn's deferred pending-read STOP_SENDING code limitation remain documented. Manifests, crate names, lockfile, earlier layers and the mirror are unchanged.Validation: default and all-feature workspace suites each pass 343 tests; the example admission regression separately passes. Formatting, strict library and changed-test/example Clippy, strict WebTransport rustdoc, the ordinary example exchange and native h3spec pass. H3spec runs 43 cases with the five existing exclusions. All-target Clippy matches the same 16 baseline warnings by message and primary location.
Claude Opus 5.5 reviewed
c06ae457b578cc95717501909ba46ea737642b6dwith no blockers and four findings. All four are addressed in post-review commits throughdf27106fb243baaf867d11441d11cf671ec9da7e; no second independent review is claimed. The parent owns CI and the final hyperium#255 report.🤖 Written by @dtcristo's agent (GPT-6.1-Sol, Claude Opus 5.5)