Skip to content

fix(moq-c): refuse only the readers waiting on a group request - #6718

Merged
kixelated merged 2 commits into
mainfrom
quest/m1/c/request-refuse
Oct 25, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest/m1/c/request-refuse

Conversation

@kixelated

@kixelated kixelated commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

Implements and deletes quest/m1/c/request-refuse.md.

Summary

moq_group_request_free and moq_group_request_abort called Fill::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 call Fill::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_readers reproduces it: on main, a subscriber arriving after an abort ends at once with no request. fetch_group never consulted recorded drops, so plain fetches were unaffected.

Impact

  • moq-c: behavior change, no ABI or signature change. After moq_group_request_abort or moq_group_request_free, a later reader of that group triggers a new group request instead of treating it as dropped.
  • Wire: none.

Choices made

  • Abort still does not deliver error_code: both calls refuse with NotFound, as documented today and as decision 4 of moq-dev/moq#6171 settled. refuse_groups could now carry Error::App(error_code), mirroring moq_track_request_abort, but that reverses a settled decision, so it is left out.

Alternatives

  • Keep drop_groups for free and refuse only on abort: rejected, since freeing an unanswered request says nothing about whether the source lost the group.

Follow-ups

  • None required. Delivering the abort code (above) is a one-line change if wanted.

Checks: just check and just ci pass locally.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 2 commits October 24, 2026 22:39
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>
@kixelated kixelated changed the title moq-c refuses only the waiting readers fix(moq-c): refuse only the readers waiting on a group request Oct 25, 2026
@kixelated
kixelated marked this pull request as ready for review October 25, 2026 05:49
@coderabbitai

coderabbitai Bot commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You'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.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 012a41d4-5b26-40cb-be8e-25b52e8cb315
Commits

Reviewing files that changed from the base of the PR and between c8b426b and 6eeb14e.

Files selected for processing: 5
  • quest/m1/c/README.md
  • quest/m1/c/request-refuse.md
  • rs/moq-c/src/api.rs
  • rs/moq-c/src/publish.rs
  • rs/moq-c/src/test.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T05:50:01.428254Z 6eeb14e Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Landing as is: no conflicts, Check passing, and the OpenAI review of 6eeb14e found nothing actionable. quest check passes on the head.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 25, 2026
Merged via the queue into main with commit 9acc2f9 Oct 25, 2026
11 checks passed
@kixelated
kixelated deleted the quest/m1/c/request-refuse branch October 25, 2026 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant