Skip to content

Commit 34b718c

Browse files
authored
Merge branch 'master' into request-fixes
2 parents 73c400f + 53d5bce commit 34b718c

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

Sources/AsyncHTTPClient/HTTPHandler.swift

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -465,26 +465,30 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
465465
self.delegate.didSendRequestHead(task: self.task, head)
466466
}
467467

468-
self.writeBody(request: request, context: context).whenComplete { result in
469-
switch result {
470-
case .success:
471-
context.write(self.wrapOutboundOut(.end(nil)), promise: promise)
472-
context.flush()
473-
474-
self.state = .sent
475-
self.delegate.didSendRequest(task: self.task)
476-
477-
let channel = context.channel
478-
self.task.futureResult.whenComplete { _ in
479-
channel.close(promise: nil)
468+
self.writeBody(request: request, context: context)
469+
.flatMap {
470+
context.writeAndFlush(self.wrapOutboundOut(.end(nil)))
471+
}
472+
.whenComplete { result in
473+
switch result {
474+
case .success:
475+
self.state = .sent
476+
self.delegate.didSendRequest(task: self.task)
477+
promise?.succeed(())
478+
479+
let channel = context.channel
480+
self.task.futureResult.whenComplete { _ in
481+
channel.close(promise: nil)
482+
}
483+
case .failure(let error):
484+
self.state = .end
485+
self.delegate.didReceiveError(task: self.task, error)
486+
promise?.fail(error)
487+
488+
self.task.fail(error)
489+
context.close(promise: nil)
480490
}
481-
case .failure(let error):
482-
self.state = .end
483-
self.delegate.didReceiveError(task: self.task, error)
484-
self.task.fail(error)
485-
context.close(promise: nil)
486491
}
487-
}
488492
}
489493

490494
private func writeBody(request: HTTPClient.Request, context: ChannelHandlerContext) -> EventLoopFuture<Void> {

0 commit comments

Comments
 (0)