mirror of
https://github.com/swift-server/async-http-client.git
synced 2026-05-03 07:32:29 +00:00
Crash fix: HTTP2 can handle requests are cancelled (#555)
Co-authored-by: George Barnett <gbarnett@apple.com>
This commit is contained in:
@@ -193,11 +193,15 @@ final class HTTP2ClientRequestHandler: ChannelDuplexHandler {
|
||||
case .forwardResponseBodyParts(let parts):
|
||||
self.request!.receiveResponseBodyParts(parts)
|
||||
|
||||
case .failRequest(let error, let finalAction):
|
||||
case .failRequest(let error, _):
|
||||
self.request!.fail(error)
|
||||
self.request = nil
|
||||
self.runTimeoutAction(.clearIdleReadTimeoutTimer, context: context)
|
||||
self.runFinalAction(finalAction, context: context)
|
||||
// No matter the error reason, we must always make sure the h2 stream is closed. Only
|
||||
// once the h2 stream is closed, it is released from the h2 multiplexer. The
|
||||
// HTTPRequestStateMachine may signal finalAction: .none in the error case (as this is
|
||||
// the right result for HTTP/1). In the h2 case we MUST always close.
|
||||
self.runFinalAction(.close, context: context)
|
||||
|
||||
case .succeedRequest(let finalAction, let finalParts):
|
||||
self.request!.succeedRequest(finalParts)
|
||||
|
||||
Reference in New Issue
Block a user