Repository navigation
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #1998.
StreamMessageQueueOut.enqueueMessagecallsstartClosing()before adding the final message to the queue. BecausestartClosing()checks for completion synchronously, an empty queue can be marked done before the final message has been queued.If the incoming side has also completed, the stream can be removed while outgoing DATA is still waiting for flow-control credit. Subsequent stream
WINDOW_UPDATEframes no longer reach the queue, leaving the response incomplete.Queue the message before calling
startClosing(), then drain the queue. This keeps pending data visible to the completion check and ensures that synchronous drain callbacks observe the closing state. The incoming queue already follows the same ordering.Tests
Tests cover:
WINDOW_UPDATEreleases the remaining DATAValidation
The focused tests reproduce the failure on the unpatched parent and all pass with this change. The full
http2VM suite passes with seven existing capability skips.dart analyze --fatal-infosand formatting checks also pass on Dart 3.13.5 / Linux.AI assistance
This change was prepared with assistance from OpenAI Codex. I reviewed, tested, and understand the changes and validation results, and can address review feedback directly.