close connections after request is processed (#34)

* close connections after request is processed
This commit is contained in:
Artem Redkin
2019-05-15 10:12:19 +01:00
committed by GitHub
parent e0c169108b
commit 317f4fa665
2 changed files with 9 additions and 0 deletions
+8
View File
@@ -286,6 +286,8 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
headers.add(name: "Host", value: request.host)
}
headers.add(name: "Connection", value: "close")
do {
try headers.validate(body: request.body)
} catch {
@@ -321,6 +323,11 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
self.state = .sent
self.delegate.didTransmitRequestBody(task: self.task)
let channel = context.channel
self.promise.futureResult.whenComplete { _ in
channel.close(promise: nil)
}
}
func channelRead(context: ChannelHandlerContext, data: NIOAny) {
@@ -346,6 +353,7 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
case .redirected(let head, let redirectURL):
self.state = .end
self.redirectHandler?.redirect(status: head.status, to: redirectURL, promise: self.promise)
context.close(promise: nil)
default:
self.state = .end
do {
@@ -55,6 +55,7 @@ class SwiftHTTPTests: XCTestCase {
head.headers.add(name: "X-Test-Header", value: "X-Test-Value")
head.headers.add(name: "Host", value: "localhost")
head.headers.add(name: "Content-Length", value: "4")
head.headers.add(name: "Connection", value: "close")
XCTAssertEqual(HTTPClientRequestPart.head(head), recorder.writes[0])
var buffer = ByteBufferAllocator().buffer(capacity: 4)
buffer.writeString("1234")