Skip to content

Commit dd70313

Browse files
committed
review comments
1 parent 96bfda2 commit dd70313

File tree

4 files changed

+25
-27
lines changed

4 files changed

+25
-27
lines changed

Sources/AsyncHTTPClient/ConnectionPool/HTTP1/HTTP1ClientChannelHandler.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
281281
case .close:
282282
context.close(promise: nil)
283283

284-
case .wait, .noAction:
284+
case .wait:
285285
break
286286

287287
case .forwardResponseHead(let head, let pauseRequestBodyStream):

Sources/AsyncHTTPClient/ConnectionPool/HTTP1/HTTP1ConnectionStateMachine.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ struct HTTP1ConnectionStateMachine {
8383
case fireChannelActive
8484
case fireChannelInactive
8585
case fireChannelError(Error, closeConnection: Bool)
86-
87-
case noAction
8886
}
8987

9088
private var state: State
@@ -361,7 +359,7 @@ struct HTTP1ConnectionStateMachine {
361359

362360
mutating func idleWriteTimeoutTriggered() -> Action {
363361
guard case .inRequest(var requestStateMachine, let close) = self.state else {
364-
return .noAction
362+
return .wait
365363
}
366364

367365
return self.avoidingStateMachineCoW { state -> Action in

Tests/AsyncHTTPClientTests/HTTP1ClientChannelHandlerTests.swift

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -841,17 +841,6 @@ class HTTP1ClientChannelHandlerTests: XCTestCase {
841841
XCTAssertEqual(request.events.map(\.kind), [.willExecuteRequest, .requestHeadSent])
842842
}
843843

844-
class SlowHandler: ChannelOutboundHandler {
845-
typealias OutboundIn = HTTPClientRequestPart
846-
typealias OutboundOut = HTTPClientRequestPart
847-
848-
func write(context: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise<Void>?) {
849-
context.eventLoop.scheduleTask(in: .milliseconds(300)) {
850-
promise?.succeed()
851-
}
852-
}
853-
}
854-
855844
func testIdleWriteTimeoutOutsideOfRunningState() {
856845
let embedded = EmbeddedChannel()
857846
var maybeTestUtils: HTTP1TestTools?
@@ -870,8 +859,8 @@ class HTTP1ClientChannelHandlerTests: XCTestCase {
870859
}
871860
request.body = .init(contentLength: nil, stream: streamCallback)
872861

873-
let delegate = NullResponseDelegate()
874-
var maybeRequestBag: RequestBag<NullResponseDelegate>?
862+
let accumulator = ResponseAccumulator(request: request)
863+
var maybeRequestBag: RequestBag<ResponseAccumulator>?
875864
XCTAssertNoThrow(
876865
maybeRequestBag = try RequestBag(
877866
request: request,
@@ -883,7 +872,7 @@ class HTTP1ClientChannelHandlerTests: XCTestCase {
883872
idleReadTimeout: .milliseconds(10),
884873
idleWriteTimeout: .milliseconds(2)
885874
),
886-
delegate: delegate
875+
delegate: accumulator
887876
)
888877
)
889878
guard let requestBag = maybeRequestBag else { return XCTFail("Expected to be able to create a request bag") }
@@ -908,15 +897,6 @@ class HTTP1ClientChannelHandlerTests: XCTestCase {
908897
}
909898
}
910899

911-
class NullResponseDelegate: HTTPClientResponseDelegate {
912-
typealias Response = Void
913-
914-
func didFinishRequest(task: AsyncHTTPClient.HTTPClient.Task<Void>) throws {
915-
()
916-
}
917-
918-
}
919-
920900
class TestBackpressureWriter {
921901
let eventLoop: EventLoop
922902

Tests/AsyncHTTPClientTests/HTTP1ConnectionStateMachineTests.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,26 @@ class HTTP1ConnectionStateMachineTests: XCTestCase {
101101
XCTAssertEqual(state.read(), .read)
102102
}
103103

104+
func testWriteTimeoutAfterErrorDoesntCrash() {
105+
var state = HTTP1ConnectionStateMachine()
106+
XCTAssertEqual(state.channelActive(isWritable: true), .fireChannelActive)
107+
108+
let requestHead = HTTPRequestHead(version: .http1_1, method: .GET, uri: "/")
109+
let metadata = RequestFramingMetadata(connectionClose: false, body: .fixedSize(0))
110+
let newRequestAction = state.runNewRequest(head: requestHead, metadata: metadata)
111+
XCTAssertEqual(newRequestAction, .sendRequestHead(requestHead, sendEnd: true))
112+
XCTAssertEqual(
113+
state.headSent(),
114+
.notifyRequestHeadSendSuccessfully(resumeRequestBodyStream: false, startIdleTimer: true)
115+
)
116+
117+
struct MyError: Error, Equatable {}
118+
XCTAssertEqual(state.errorHappened(MyError()), .failRequest(MyError(), .close(nil)))
119+
120+
// Primarily we care that we don't crash here
121+
XCTAssertEqual(state.idleWriteTimeoutTriggered(), .wait)
122+
}
123+
104124
func testAConnectionCloseHeaderInTheRequestLeadsToConnectionCloseAfterRequest() {
105125
var state = HTTP1ConnectionStateMachine()
106126
XCTAssertEqual(state.channelActive(isWritable: true), .fireChannelActive)

0 commit comments

Comments
 (0)