Skip to content

quest: fold srt-end into the m2 srt-protocol driver - #6685

Merged
kixelated merged 3 commits into
mainfrom
quest/m1/broadcast-lifecycle/srt-end
Oct 24, 2026
Merged

kixelated merged 3 commits into
mainfrom
quest/m1/broadcast-lifecycle/srt-end

Conversation

@kixelated

@kixelated kixelated commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Removes quest/m1/broadcast-lifecycle/srt-end.md and moves its goal into SRT on the shared socket, which already plans for moq-srt to drive sans-io srt-protocol directly. The maintainer chose this route.

Why

srt-tokio 0.4.4 (the latest release, identical to upstream main, unpushed since 2024-05) cannot tell a peer shutdown from a silent peer:

  • SrtSocket's Stream impl maps every item to Ok, and its task returns ().
  • In srt-protocol, a peer Shutdown control packet, the peer idle timeout, and a UDP or listener channel error all move the receiver to Drain then Closed. ConnectionStatus is private and keeps no cause.
  • So serve_publish sees None for all three. SocketStatistics has no shutdown counter and is not sent again at close.

A moq-srt driver over srt-protocol sees every inbound packet, so a close without a valid peer Shutdown can abort. It also takes now as input, which makes the mocked-clock tests possible; srt-tokio reads std's clock directly. The broadcast ends in both cases today, so the bug's cost (a finished broadcast keeps its retention linger, an aborted one does not) does not justify pulling that driver into m1.

Nothing was posted upstream. What upstream would need instead: srt-protocol records the close cause on DuplexConnection, and srt-tokio yields Err (TimedOut / ConnectionAborted) before None for anything but a peer shutdown or local close.

Changes

  • quest rm of srt-end, which drops it from the broadcast-lifecycle epic's Required list.
  • srt-demux's Goal and Plan gain the clean-end versus failure behavior for the server and Client pull, the reason above, and mocked-clock tests.
  • The broadcast-lifecycle epic links srt-demux under Related.

Relation to moq-dev/moq#6660

None: no code changes here, and #6660 does not touch moq-srt. srt-demux will map its clean end onto whatever end API is on main when it lands.

Impact

Public API: none. Wire: none.

Checks

quest check --base origin/main passes. No Rust changed, so just check was not run.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 2 commits October 24, 2026 12:11
…meout

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title SRT tells a clean end from a failure quest: srt-end needs an SRT close cause srt-tokio does not expose Oct 24, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title quest: srt-end needs an SRT close cause srt-tokio does not expose quest: fold srt-end into the m2 srt-protocol driver Oct 24, 2026
@kixelated
kixelated marked this pull request as ready for review October 24, 2026 19:34
@coderabbitai

coderabbitai Bot commented Oct 24, 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 7 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: 92c9e037-30dc-47b6-bb7b-66bd694a7253
Commits

Reviewing files that changed from the base of the PR and between f086280 and d21bc6c.

Files selected for processing: 3
  • quest/m1/broadcast-lifecycle/README.md
  • quest/m1/broadcast-lifecycle/srt-end.md
  • quest/m2/one-port/srt-demux.md
  • 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 24, 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-24T19:35:53.604998Z d21bc6c 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

Copy link
Copy Markdown
Collaborator Author

Merging d21bc6c with the maintainer's approval. The non-Grok review of this head is clean, every finding is fixed or answered, and the pre-land quest check passes against origin/main.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 24, 2026
Merged via the queue into main with commit 55f6ed2 Oct 24, 2026
11 checks passed
@kixelated
kixelated deleted the quest/m1/broadcast-lifecycle/srt-end branch October 24, 2026 22: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