[release/6.0] HTTP/3: Abort connection on unexpected exception from AcceptStream #37461
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.
Backport of #37432 to release/6.0
/cc @JamesNK
Customer Impact
An unexpected HTTP/3 connection error could put Kestrel into a retry loop. HTTP/3 connections will stay open forever, throwing errors and consuming CPU. An example of an unexpected error is being fixed in runtime dotnet/runtime#60244.
This PR adds an additional safeguard to Kestrel so that a connection will be aborted if there is an unexpected error. This ensures the connection immediately exits instead of going into a retry loop.
Testing
Manual testing. Confirmed that a HTTP/3 connection is aborted when there is an unexpected exception.
Risk
Low. The new logic is only for HTTP/3, and is only executed when there is an HTTP/3 connection error.