moq-lite: add Path Setup Parameter for URI-less transports#28
Conversation
|
Warning Review limit reached
More reviews will be available in 55 minutes and 40 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughThis PR updates the MOQ Lite protocol specification to support request path negotiation on ALPN-only bindings. It adds RFC3986 as a normative reference, clarifies that ALPN bindings lack a request URI and must receive the path via a new SETUP parameter, defines the Path parameter (0x2) in the SETUP table, and provides comprehensive specification of the parameter's format (non-empty UTF-8 URI path starting with 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches✨ Simplify code
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 |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
draft-lcurley-moq-lite.md (1)
618-631: ⚡ Quick winClarify capability wording to avoid normative ambiguity.
This section says the Path Parameter is “not a capability” (Line 618) but then describes relay behavior “like every other negotiated capability” (Line 630). Please align wording so it’s consistently treated as per-hop setup metadata, not a negotiated capability.
✏️ Suggested wording tweak
-The Path Parameter carries the request path the client wishes to reach, equivalent to the path component of a moq-lite URI. +The Path Parameter carries the request path the client wishes to reach, equivalent to the path component of a moq-lite URI. @@ -Unlike the other Setup Parameters it is not a capability — it is connection metadata that rides along in SETUP because that is the first client-to-server message of the session. +Unlike capability-style Setup Parameters, Path is connection metadata carried in SETUP because that is the first client-to-server message of the session. @@ -A relay MUST NOT forward the Path Parameter; like every other negotiated capability it applies only to this hop (see [Session](`#session`)). +A relay MUST NOT forward the Path Parameter; it is strictly hop-scoped setup metadata (see [Session](`#session`)).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@draft-lcurley-moq-lite.md` around lines 618 - 631, Edit the Path Parameter wording to consistently treat it as per-hop setup metadata rather than a negotiated capability: change the sentence that currently says “Unlike the other Setup Parameters it is not a capability” to clearly state it is per-hop setup metadata carried in SETUP, and replace “like every other negotiated capability” with wording such as “like other per-hop setup parameters” or “like other setup metadata that applies only to this hop” so the Path Parameter, SETUP handling rules, and the reference to the Session section all consistently describe it as per-hop setup metadata (keep references to the Path Parameter, SETUP, and Session intact).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@draft-lcurley-moq-lite.md`:
- Around line 618-631: Edit the Path Parameter wording to consistently treat it
as per-hop setup metadata rather than a negotiated capability: change the
sentence that currently says “Unlike the other Setup Parameters it is not a
capability” to clearly state it is per-hop setup metadata carried in SETUP, and
replace “like every other negotiated capability” with wording such as “like
other per-hop setup parameters” or “like other setup metadata that applies only
to this hop” so the Path Parameter, SETUP handling rules, and the reference to
the Session section all consistently describe it as per-hop setup metadata (keep
references to the Path Parameter, SETUP, and Session intact).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: a3d18981-7158-42b8-900e-2121c57ea201
📒 Files selected for processing (1)
draft-lcurley-moq-lite.md
|
Addressed the CodeRabbit nitpick in 353423f: reworded the Path Parameter section to consistently describe it as per-hop setup metadata (removed the "not a capability" framing and changed "like every other negotiated capability" to "like other per-hop setup metadata"). |
Resolve internal inconsistency flagged in review: the section called the Path Parameter "not a capability" but then described relay handling "like every other negotiated capability". Reword both to consistently treat it as per-hop setup metadata. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
353423f to
aac5801
Compare
What
Adds a
PathSetup Parameter (0x2) to moq-lite, letting a client convey the request path it wants to reach (origin / relay / virtual host) at connection setup. Modeled on the PATH parameter from draft-ietf-moq-transport-18.Why
Two of moq-lite's four transport bindings — bare QUIC (binding 1) and Qmux-over-TCP/TLS (binding 3) — negotiate only an ALPN token and have no request URI. Without this parameter, a client on those transports has no way to indicate which path it wants, so a server cannot route the session before broadcasts are exchanged. The URI-bearing bindings (WebTransport's CONNECT path, WebSocket's request URI) already carry it in their handshake.
Details
0x2 | Path | Path (s)./([RFC3986], added as a normative reference).PROTOCOL_VIOLATION.PROTOCOL_VIOLATION.PROTOCOL_VIOLATION; unrecognized/unsupported path → session close. Uses moq-lite's existing generic error handling rather than introducing dedicatedINVALID_PATH/MALFORMED_PATHcodes.Reviewer notes
🤖 Generated with Claude Code