Repository navigation
Conversation
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 17 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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: d45b9337b4
ℹ️ 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".
| Error::Stream(_) => Self::Internal, | ||
| Error::Cancel | Error::Closed | Error::GoingAway | Error::SessionClosed => Self::Cancel, | ||
| Error::Unauthorized => Self::Unauthorized, | ||
| Error::Unsupported => Self::Unsupported, |
There was a problem hiding this comment.
Gate the Lite-only session code by negotiated protocol
When an IETF session is aborted with Error::Unsupported, Session::abort still serializes SessionError::from(&err).to_code(), so this protocol-neutral mapping sends Lite-only code 0x30 on the IETF wire. Conversely, Error::from_transport uses SessionError::from_code, causing an incoming IETF 0x30 to be mislabeled Unsupported instead of Unknown. Encode and decode this code only at Lite-aware boundaries rather than in the shared session table.
AGENTS.md reference: rs/moq-net/AGENTS.md:L8-L8
Useful? React with 👍 / 👎.
Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Co-Authored-By: GPT-6 Astra <noreply@openai.com>
Problem
Lite AUTH reset an unrepresentable grant. After AUTH_OK, that loses the distinction between unsupported credentials and an ordinary stream failure. The original implementation also assigned Lite code
0x30meaning in the shared session registry, so IETF session aborts could emit it and incoming IETF closes could be misclassified.Approach
Send Lite AUTH_ERROR NOT_SUPPORTED and FIN for unsupported tokens or grants that cannot fit in one message, including updates. Preserve the historical initial-reset fallback. Keep Lite session code translation at the negotiated protocol boundary, including admission refusals, active-session aborts, stream operations, and supervisor close observation. Shared decoding preserves unregistered
0x30as unknown; IETF emits its internal-error fallback for a session-level Unsupported condition and retains request NOT_SUPPORTED0x3.Add simulated regressions for both outgoing and incoming session closes, admission refusals, explicit Rust/JS AUTH refusals, and the existing CI byte-level Rust/JS AUTH round trip.
Impact
SessionError::Unsupported; JavaScript addsSessionCode.UnsupportedandAuth.Unsupported.code. RustStreamCodesgains a defaultdecode_session_codemethod. Lite-only mapping helpers and negotiated session encoding stay private.SessionError::to_codeandfrom_codedescribe shared codes. Protocol drivers translate the Lite-only variant at their boundary; the shared enum does not assign Lite semantics to IETF0x30.0x30in AUTH_ERROR, documented in the Lite draft. IETF request and session registries retain their existing assignments.Alternatives
Keeping stream resets loses the explicit error after AUTH_OK. Sharing the Lite session entry with IETF leaks a protocol-specific meaning. The implemented recommendation is AUTH_ERROR plus FIN with negotiated boundary translation, following the quest's selected code and carrier.
Validation
Full Nix
just checkpasses on8da84fd2f: 5,957 default Rust tests, the required feature configurations, all JavaScript checks including 1,588 networking tests, and draft validation. All four cross-language byte preflights pass, including AUTH Unsupported. The complete interop matrix is still running. Two simulated regressions failed before the review fix on IETF17: active abort emitted Lite0x30, and incoming0x30became Unsupported. Admission coverage caught an additional Lite fallback regression during implementation. All 20 session setup/close cases pass after correction; focused Rust validation passed 1,738 tests with six skips, and JavaScript AUTH/error validation passed 81 tests. Tests use simulated transport/time. Prior oversized-grant/update and cross-language byte-boundary regressions remain in the PR.Follow-ups
Retires
quest/m1/auth/not-supported.md. AUTH protocol-violation handling remains separate work. Relay refresh #5282 will compose this implementation instead of adding a competing reset convention.(Written by GPT-6 Astra)