HTTP/3: Abort connection on unexpected exception from AcceptStream #37432
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.
Addresses dotnet/runtime#60133
An unexpected error from
QuicConnection.AcceptStreamAsync
can put a Kestrel HTTP/3 connection into a bad state and make the connection run forever. The PR adds additional checks so that an unexpected error aborts the connection.Can't unit test this because the known way to get into this state is the connection being closed without an abort, and
QuicConnection
always aborts on dispose.System.Net.Quic is fixing the underlying cause of dotnet/runtime#60133. This PR independently fixes the issue happening as well. However, IMO both changes should also go into .NET 6. This PR acts as a safeguard against any other possible causes of this very bad situation.