Repository navigation
fix(moq-c): refuse only the readers waiting on a group request - #6718
Conversation
Quest-Claim: df4e10e3bd2f40dc
moq_group_request_free and moq_group_request_abort called Fill::drop_groups, recording the group as dropped for every later reader. They now call Fill::refuse_groups, so only the readers waiting now fail as not found and a later reader asks again, as Rust's fill paths do since #6171. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.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 14 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. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 6eeb14e
No actionable bugs found. Reusing Fill::refuse_groups is the right narrow fix: it settles waiting readers without recording permanent loss, and preserves the C ABI and documented error-code behavior. The regression covers both abort and free followed by a fresh request that can succeed.
Verification limits: static inspection of the changed API, request lifecycle, underlying fill refusal/cleanup implementation, and tests; tests were not run.
|
Landing as is: no conflicts, Check passing, and the OpenAI review of 6eeb14e found nothing actionable. (Written by Claude Opus 5.5) |
Implements and deletes
quest/m1/c/request-refuse.md.Summary
moq_group_request_freeandmoq_group_request_abortcalledFill::drop_groups, which records the group as dropped on the track. Every later subscriber then skipped it without asking, and a relay forwards a recorded drop downstream. They now callFill::refuse_groups(.., Error::NotFound), as Rust's fill paths do since moq-dev/moq#6171: the readers waiting now fail as not found, and a later reader gets a fresh group request.The new test
a_rejected_group_request_binds_only_its_readersreproduces it: onmain, a subscriber arriving after an abort ends at once with no request.fetch_groupnever consulted recorded drops, so plain fetches were unaffected.Impact
moq_group_request_abortormoq_group_request_free, a later reader of that group triggers a new group request instead of treating it as dropped.Choices made
error_code: both calls refuse withNotFound, as documented today and as decision 4 of moq-dev/moq#6171 settled.refuse_groupscould now carryError::App(error_code), mirroringmoq_track_request_abort, but that reverses a settled decision, so it is left out.Alternatives
drop_groupsforfreeand refuse only onabort: rejected, since freeing an unanswered request says nothing about whether the source lost the group.Follow-ups
Checks:
just checkandjust cipass locally.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code