Skip to content

moq-lite-05: add Path Setup Parameter for URI-less transports#27

Merged
kixelated merged 1 commit into
mainfrom
claude/exciting-varahamihira-cc9460
Jun 9, 2026
Merged

moq-lite-05: add Path Setup Parameter for URI-less transports#27
kixelated merged 1 commit into
mainfrom
claude/exciting-varahamihira-cc9460

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

What

Adds a Path Setup 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

  • New parameter in the Setup Parameter registry: 0x2 | Path | Path (s).
  • Value is a non-empty UTF-8 URI path beginning with / ([RFC3986], added as a normative reference).
  • Client-only. SETUP is bidirectional in moq-lite, so the asymmetry is stated explicitly: a server MUST NOT send it; a client that receives one closes with PROTOCOL_VIOLATION.
  • Required on bindings 1 and 3; forbidden on bindings 2 and 4 (which carry the path in their handshake URI) — a server receiving it there closes with PROTOCOL_VIOLATION.
  • Empty/malformed path → PROTOCOL_VIOLATION; unrecognized/unsupported path → session close. Uses moq-lite's existing generic error handling rather than introducing dedicated INVALID_PATH/MALFORMED_PATH codes.
  • Relays MUST NOT forward it (per-hop, like other negotiated capabilities).
  • Pointer added in the Session section.

Reviewer notes

  • The original request was "native QUIC only," but the underlying reason PATH exists ("no handshake URI") applies equally to Qmux-over-TCP/TLS. Scope was deliberately extended to both URI-less bindings (1 and 3) so TCP/TLS sessions aren't left unable to specify a path.
  • Spec/doc change only — not built locally (requires the i-d-template toolchain).

🤖 Generated with Claude Code

Native QUIC and Qmux-over-TCP/TLS negotiate only an ALPN token and have
no request URI, so there is no way for a client to convey which path
(origin/relay/virtual host) it wants to reach. Add a Path Setup
Parameter (0x2) carrying an RFC3986 URI path, mirroring the PATH
parameter from draft-ietf-moq-transport-18.

It is client-only and required on the URI-less bindings (1 and 3),
forbidden on the bindings that already carry the path in their handshake
(WebTransport CONNECT URI, WebSocket request URI). Misuse and malformed
paths are PROTOCOL_VIOLATION; an unsupported path closes the session.
Relays do not forward it, consistent with other per-hop capabilities.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ab32403f-cf2d-442f-bdf5-97715228ed72

📥 Commits

Reviewing files that changed from the base of the PR and between a5b185a and d61341f.

📒 Files selected for processing (1)
  • draft-lcurley-moq-lite.md

Walkthrough

This pull request adds a Path Parameter capability to the MOQ Lite SETUP protocol. The change introduces a new mechanism for client-to-server communication of request paths in protocol bindings that do not define their own request URI (such as ALPN-only QUIC and Qmux over TCP/TLS). The implementation includes a normative reference to RFC3986, a parameter table entry defining Path as parameter ID 0x2 with string value type, and a complete specification section detailing encoding constraints, required presence/absence by binding type, error-handling behavior, and relay forwarding rules.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely describes the main change: adding a Path Setup Parameter to moq-lite for transports without request URIs.
Description check ✅ Passed The description is detailed and directly related to the changeset, explaining the what, why, and technical details of the Path parameter addition.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch claude/exciting-varahamihira-cc9460

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@kixelated kixelated merged commit d1174e6 into main Jun 9, 2026
2 checks passed
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