Repository navigation
fix(net): a capped IETF stream never claims END_OF_GROUP (backport #5077) - #5135
Conversation
Backport to release. The Rust regression test decodes the header with release's GroupHeader::decode form and runs under tokio::test, since release lacks coding::decode_buf and moq_net_sim. Quest edits dropped. (cherry picked from commit 9680ca9) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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. |
|
Grok review of Small, correct fix: both publishers now set END_OF_GROUP only when the slice has no Non-blocking:
Verdict: MERGE (once CI is green) This is an automated review, not the maintainer's decision |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 7a378e2
No new concrete correctness or security bug found in the full three-file diff and relevant surrounding code.
Direction: keep this focused backport. Deriving END_OF_GROUP from the existing slice cap in rs/moq-net/src/ietf/publisher.rs:2315–2321 and js/net/src/ietf/publisher.ts:588–602 is the simplest safe fix: capped streams stop claiming group completion, while uncapped headers and the public API stay unchanged.
Non-blocking coverage: the existing Grok review already identifies the missing boundary cases at rs/moq-net/src/ietf/publisher.rs:4431–4432. Adding Some(2) and Some(3) assertions would pin the documented behavior for a cap at or beyond the real end.
Verification limits: GitHub-only source review, including range selection, header encoding, stream termination, and tests. I did not run builds, tests, or cross-language interop. At the final recheck, the PR remained open/non-draft on this SHA, with eight checks queued and Auto-merge skipped; no CI pass verified.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Re: the Grok review and the OpenAI review: added (Written by Claude Opus 5.5) |
|
Follow-up review at The push is test-only: Still open (non-blocking): that behavior (a cap at or past the real end also drops END_OF_GROUP) is now intentional and tested, so it's still worth a line in the release notes. CI is pending on this head. Verdict: MERGE once CI is green. This is an automated review, not the maintainer's decision |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 1aec3e6
Follow-up to my previous review: the only delta is two regression assertions in rs/moq-net/src/ietf/publisher.rs:4432–4433. With three objects numbered 0–2, Some(2) and Some(3) correctly check caps at and beyond the real end. This addresses the prior coverage note, also confirmed in the existing follow-up review.
No new actionable findings. Direction remains sound: extend the existing test; no production logic, API, wire, or dependency changes in this push.
Verification: GitHub-only comparison against 7a378e2 and inspection of the test helper. Same release base, one direct descendant commit. I did not run tests or builds; current-head checks remain queued/in progress. Rechecked open/non-draft state, head, and reviews before posting.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Merged (Written by Claude Opus 5.5) |
Backport of #5077 (
9680ca9e4) torelease.What breaks on release
When a served range (such as an absolute subscription filter) ends partway through a group, the IETF publisher caps that group's stream at the end Location. Release's
GroupFlagsdefaultshas_end: true, so the capped stream still sets the END_OF_GROUP header bit, and its FIN tells the subscriber the group ended at the cap. Any IETF peer subscribing to moq-relay (or a JS publisher) with an end Location, such as imquic testing draft-22 at the Seattle interop on 2026-10-12, would cache a truncated group as complete. Both the Rust and JS publishers had this.What changed versus the original
TrackServeand JSPublisher) applied unchanged, along with the JS test updates.coding::decode_buf, so it decodes the header with release'sietf::GroupHeader::decode(&mut buf, Version::Draft20), and it runs under#[tokio::test]because release has nomoq_net_sim.Public API and wire impact
No public API change. Wire: a stream capped by a range end no longer sets the END_OF_GROUP bit; uncapped streams are unchanged.
Test evidence
cargo nextest run -p moq-net capped_group_does_not_claim: passes with the fix, fails without it.bun test src/ietf/publisher.test.tsinjs/net: 69 pass. WithhasEnd: truerestored, two filter tests fail.just check(againstorigin/release): passes, 4988 Rust tests plus lint and JS tests.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code