Repository navigation
fix: discard expired negotiations and serialize ICE restart cleanup - #502
Merged
Merged
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.
An operation timeout previously completed only the outer future, allowing a delayed ICE restart response to apply a remote description after the next operation had started. Expire the awaited operation steps, discard late responses, and restore stable signaling before advancing the queue. Close the peer if recovery itself cannot finish.
Complete HTTP ICE restart cleanup on the serialized control executor before releasing the operation, and associate cleanup with its own request so it cannot clear a later restart or restore obsolete ICE credentials. Process accepted restart responses on control as well.
Add deterministic regression coverage for delayed restart answers in both signaling roles and successive HTTP restarts while the event executor is paused. All 145 tests across NegotiationTimeoutTests, PeerTests, HttpIceTests, HttpSessionTests, RuntimeCloseTests, and SerialExecutorTests pass; the regression scenarios fail against the original code.