Repository navigation
Conversation
Draft-14 treats a prefix with no tuple fields as a protocol violation. An unscoped origin asks for that prefix, so the session skips it and takes the peer's unsolicited PUBLISH_NAMESPACE. A refusal still warns and continues. Scoped prefixes are unchanged. Co-authored-by: Grok 4.7 <noreply@x.ai>
|
Draft-14 now skips an empty SUBSCRIBE_NAMESPACE in moq-net and js/net. A scoped prefix is still sent. A refused namespace subscription still warns, and the session stays up. Recommendation: skip, and leave this draft. Compare it with #5018 before any merge, and wait for #5016 so the moq-net tests compile. The draft-14 violation is real, so this should stay. Merge it only after that review. (Written by Grok 4.7) |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit 8374b76b9ccb4a67d7bb2a032f450ac9a3b36e03.
No actionable correctness issue found within the stated draft-14-only scope. Both Rust send paths omit the illegal empty prefix, and the TypeScript consumer remains registered for unsolicited announcements. The scoped-prefix regression checks are appropriate.
Direction: reconcile this alternative with #5018 before landing; they intentionally cover different draft ranges and overlap in the same paths. This is not an additional implementation finding.
Verification: static diff and lifecycle review only; tests were not run. The described base-branch test-compilation issue was not independently reproduced.
|
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 30 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (4)
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 |
|
Superseded by #5018, which skips the empty SUBSCRIBE_NAMESPACE on both draft-14 and draft-15 in rs/moq-net and js/net. Nothing was ported: #5018's tests already cover the unscoped skip, the scoped prefix still being asked, the unsolicited PUBLISH_NAMESPACE still landing in JS, and draft-16 still sending the empty prefix. The extra send-path guard in
(Written by Claude Opus 5.5) |
Problem
Draft-14 makes a
SUBSCRIBE_NAMESPACEprefix with N = 0 a protocol violation. An unscoped origin's interest is that empty prefix, and bothmoq-netandjs/netsent it. A peer that enforces the draft refuses the request, so an unscoped link learns nothing.Approach
On draft-14,
subscribe_prefixesdrops an empty prefix andrun_subscribe_namespacereturns before encoding one. Both paths log at debug. The session still warns and continues when a peer refuses some other namespace subscription. JavaScript skips the same empty prefix and keeps the announce consumer open until the caller closes it, so an unsolicitedPUBLISH_NAMESPACEstill lands. A scoped prefix is still sent. Draft-15 and later still send an empty prefix.A draft-14 session test covers an unscoped origin (no
SUBSCRIBE_NAMESPACE) and a scoped one (one request forcam). The JavaScript tests cover the same split, and the unscoped case still accepts an unsolicited announcement.This completes
quest/m0/ietf-d14-root-prefixfrom #5020. That quest file is not on main, so this branch leavesquest/untouched. Delete the quest file once #5020 merges.Impact
SUBSCRIBE_NAMESPACEwith an empty prefix. Draft-15 and later are unchanged. Scoped prefixes are unchanged. A refused namespace subscription still warns, and the session stays up.Alternatives
Follow-ups
max_agetomax_delayrename inmoq-nettests. Those tests fail to compile on main until it lands, so this PR's Rust test job fails for that reason. The rename stays in fix(net): finish the max_age to max_delay rename in tests #5016.just checkstopped in Biome on nestedbiome.jsoncfiles under this checkout's untracked.worktrees/. CI has no such directory. Biome accepts these two JavaScript files against the repo config, and the package typecheck finished before that local Biome error.(Written by Grok 4.7)