Inject SignalWebSocket into IncomingMessageObserver #13820
Closed
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.
Description
This PR updates
IncomingMessageObserverto acceptSignalWebSocketas a constructor parameter. This change ensures each IncomingMessageObserver is explicitly tied to the SignalWebSocket instance owned by itsNetworkDependenciesModule, resolving a race condition that could occur during a network reset.Before this,
IncomingMessageObservergot itsSignalWebSocketfromAppDependencies. During network resets (AppDependencies.resetNetwork()), NetworkDependenciesModule and its SignalWebSocket were recreated. If the old IncomingMessageObserver was still terminating asynchronously (terminateAsync()), it could accidentally reference and manipulate the new SignalWebSocket. So whendisconnect()is called, it may disconnect the current SignalWebSocket, even if it is intended to disconnect the previous one. This led to issues like the old observer disconnecting the new socket, and the old socket remaining connected, appearing as if two observers were running simultaneously in the logs.By directly injecting the corresponding SignalWebSocket, we eliminate the shared dependency and resolve the race condition.