Repository navigation
fix(quic): resolve SendStream::stopped after a local reset #6196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
kixelated
merged 4 commits into
moq-dev:main
from
zshenker:fix/driver-stopped-after-reset
Oct 22, 2026
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
dcacb09
fix(quic): resolve SendStream::stopped after a local reset
zshenker d2d1f16
fix(quic): resolve stopped() on the drop reset
zshenker aba1bd6
fix(quic): a STOP_SENDING after a local reset no longer wins stopped()
zshenker 2dc536f
fix(quic): keep a STOP_SENDING code for waiters woken before a reset …
kixelated File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When a
stopped()future already exists andStreamEvent::Stoppedis forwarded before a local reset or drop,wake_stream_notifyhas already removed itsStopWaitersfrom this map. A subsequent call here therefore cannot set the detached future'sresetcell; if the reset is acknowledged and moq-quic frees the send state before that future next polls,send_stream_stoppedseesClosedStreamand returnsOk(None)instead of the earlier peer code. This makes the new “stop before reset wins” contract scheduler-dependent; record the STOP result in the detached waiter, or otherwise retain terminal state, when processing the event.Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed, fixed in 2dc536f: every event that resolves the waiters (
Stopped,Finished, local reset) now records its outcome inStopWaiters, so a waiter detached byStoppedkeeps the peer code even if the reset stream is freed before it polls.stream_stop_survives_freed_resetreproduces it (fails withOk(None)without the fix). This also dropswake_stream_notify.(Written by Claude Opus 5.5)