Conversation
Runs the #4249 cases (abort after accept, abort then drop, reject during the handshake) over https://, moqt://, and ws://. Fails until the qmux and web-transport-moq fixes are released and pinned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SendStream::set_priority takes an i32 send order in trait 0.5. moq-net keeps its u8 send orders and widens them at the trait boundary. Pins qmux 0.6, web-transport-iroh 0.8, and web-transport-wasm 0.7, which implement the new trait. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
b8fcc96 to
c12415d
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Decisions
(Written by Opus 5.5) |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d43956dfcf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| pollster = "1.0" | ||
| pulldown-cmark = { version = "0.13", default-features = false } | ||
| qmux = { version = "0.5.1", default-features = false } | ||
| qmux = { version = "0.6", default-features = false } |
There was a problem hiding this comment.
Commit the updated dependency lockfile
The manifest now requires qmux 0.6 and the new WebTransport versions, but the unchanged Cargo.lock still pins qmux 0.5.1, web-transport-trait 0.4.0, and the previous adapter versions. The required quest validation invokes cargo run --locked, and cargo check --help defines --locked as asserting that Cargo.lock remains unchanged, so just check and CI cannot resolve this workspace after these manifest changes. Update and commit Cargo.lock with the released dependencies.
AGENTS.md reference: quest/AGENTS.md:L67-L72
Useful? React with 👍 / 👎.
Problem
A client loses the application close code its server sent (
Session::abort(App(4011)),Request::reject(Reject::App(4011))) over WebSocket/qmux (ws://) and raw QUIC (moqt://). Instead it seesTransport("connection closed"), the close as text insideTransport(..), or its ownSession(Internal). WebTransport is fine. Both bugs are upstream.Approach
Fixed at the source:
close()no longer overwrite it.accept_*/open_*/recv_datagramreport it instead of a bareClosed.web-transport-moqdecodes a raw QUIC peer'sApplicationClosedcode directly, andclose()after the connection closed keeps the peer's reason.Releasing qmux from web-transport
mainalso ships #390'sset_priority(i32), so the trait goes to 0.5 (moq-dev/web-transport#401, moq-dev/noq#13). This PR follows it:rs/moq-tokio/tests/close_code.rsruns the issue's three cases (abort after accept, abort then drop, reject during handshake), 5 fresh connections each overhttps://,moqt://, andws://. It fails on the current pins for everymoqt://andws://connection.web-transport-moq1.3.2,qmux0.6,web-transport-trait0.5,web-transport-iroh0.8, andweb-transport-wasm0.7. Theset_priorityimpls takei32. moq-net keeps itsu8send orders and widens them at the trait boundary.Verified with a local
[patch.crates-io]on the four upstream branches merged pairwise (not committed):cargo check --workspace --all-targetspasses;close_codepasses; moq-net, moq-tokio, moq-uring, and moq-e2ee tests pass; clippy is clean.Draft until the upstream crates are released (
web-transport-moqis already pinned to the planned 1.3.2). Then refreshCargo.lockand CI can build.@moq/qmuxalready keeps the first close, so no JS change.Impact
moq_net::web_transport_trait(re-exported) is now 0.5.SendStream::set_prioritytakesi32.moq_tokio::transport::Session<S>requires a trait-0.5 session. Hencedev.Alternatives
main. The maintainer chose to releasemainwith the trait bump.i32is left for later. Nothing needs it yet.Follow-ups
web-transport-moqstill map stream RESET/STOP codes through the HTTP/3 space.Closes #4249
(Written by Opus 5.5)
🤖 Generated with Claude Code