Skip to content

Commit 54b0b96

Browse files
artemredkinweissi
authored andcommitted
cancel should be done with outbound user event (#110)
cancel should be done with outbound user event
1 parent 513be15 commit 54b0b96

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

Sources/AsyncHTTPClient/HTTPHandler.swift

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -473,12 +473,14 @@ extension HTTPClient {
473473

474474
/// Cancels the request execution.
475475
public func cancel() {
476-
self.lock.withLock {
476+
let channel: Channel? = self.lock.withLock {
477477
if !cancelled {
478478
cancelled = true
479-
channel?.pipeline.fireUserInboundEventTriggered(TaskCancelEvent())
479+
return self.channel
480480
}
481+
return nil
481482
}
483+
channel?.triggerUserOutboundEvent(TaskCancelEvent(), promise: nil)
482484
}
483485

484486
@discardableResult
@@ -732,12 +734,19 @@ extension TaskHandler: ChannelDuplexHandler {
732734
self.state = .end
733735
let error = HTTPClientError.readTimeout
734736
self.failTaskAndNotifyDelegate(error: error, self.delegate.didReceiveError)
735-
} else if (event as? TaskCancelEvent) != nil {
737+
} else {
738+
context.fireUserInboundEventTriggered(event)
739+
}
740+
}
741+
742+
func triggerUserOutboundEvent(context: ChannelHandlerContext, event: Any, promise: EventLoopPromise<Void>?) {
743+
if (event as? TaskCancelEvent) != nil {
736744
self.state = .end
737745
let error = HTTPClientError.cancelled
738746
self.failTaskAndNotifyDelegate(error: error, self.delegate.didReceiveError)
747+
promise?.succeed(())
739748
} else {
740-
context.fireUserInboundEventTriggered(event)
749+
context.triggerUserOutboundEvent(event, promise: promise)
741750
}
742751
}
743752

0 commit comments

Comments
 (0)