diff --git a/Sources/AsyncHTTPClient/HTTPHandler.swift b/Sources/AsyncHTTPClient/HTTPHandler.swift index fb32f482c..d152e6660 100644 --- a/Sources/AsyncHTTPClient/HTTPHandler.swift +++ b/Sources/AsyncHTTPClient/HTTPHandler.swift @@ -867,15 +867,17 @@ extension TaskHandler: ChannelDuplexHandler { return context.eventLoop.makeSucceededFuture(()) } + let channel = context.channel + func doIt() -> EventLoopFuture { return body.stream(HTTPClient.Body.StreamWriter { part in let promise = self.task.eventLoop.makePromise(of: Void.self) // All writes have to be switched to the channel EL if channel and task ELs differ - if context.eventLoop.inEventLoop { + if channel.eventLoop.inEventLoop { self.actualBodyLength += part.readableBytes context.writeAndFlush(self.wrapOutboundOut(.body(part)), promise: promise) } else { - context.eventLoop.execute { + channel.eventLoop.execute { self.actualBodyLength += part.readableBytes context.writeAndFlush(self.wrapOutboundOut(.body(part)), promise: promise) } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift index ec8eb92fe..eccc9787e 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift @@ -2319,7 +2319,7 @@ class HTTPClientTests: XCTestCase { } func testContentLengthTooLongFails() throws { - let url = self.defaultHTTPBinURLPrefix + "/post" + let url = self.defaultHTTPBinURLPrefix + "post" XCTAssertThrowsError( try self.defaultClient.execute(request: Request(url: url, @@ -2348,7 +2348,7 @@ class HTTPClientTests: XCTestCase { // currently gets stuck because of #250 the server just never replies func testContentLengthTooShortFails() throws { - let url = self.defaultHTTPBinURLPrefix + "/post" + let url = self.defaultHTTPBinURLPrefix + "post" let tooLong = "XBAD BAD BAD NOT HTTP/1.1\r\n\r\n" XCTAssertThrowsError( try self.defaultClient.execute(request: