fix: Flush the UnityTransport send queue on shutdown #1234
Merged
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.
When
NetworkManager.Shutdown
is called, all clients are disconnected and the transport is immediately shut down. ForUnityTransport
, that means disconnect messages are not actually sent to the remote peers, because nothing goes out on the wire until an internal update of the driver is scheduled (which doesn't happen between the disconnect calls and the transport's shutdown).This is fixed by flushing the internal send queue when shutting down the transport. This will send out any disconnect messages that might still be pending. The downside is that
UnityTransport.Shutdown
might take a bit longer to execute, since it will need to perform network activity. But when you're shutting down, you're presumably not in a situation where performance is critical, so this is probably acceptable.