Skip to content

Commit 96bfda2

Browse files
committed
Clear write timeouts upon request completion.
When a request completes we have no use for the idle write timer, we clear the read timer and we should clear the write one too.
1 parent 90e8b58 commit 96bfda2

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

Sources/AsyncHTTPClient/ConnectionPool/HTTP1/HTTP1ClientChannelHandler.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
314314
let oldRequest = self.request!
315315
self.request = nil
316316
self.runTimeoutAction(.clearIdleReadTimeoutTimer, context: context)
317+
self.runTimeoutAction(.clearIdleWriteTimeoutTimer, context: context)
317318

318319
switch finalAction {
319320
case .close:
@@ -353,6 +354,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
353354
let oldRequest = self.request!
354355
self.request = nil
355356
self.runTimeoutAction(.clearIdleReadTimeoutTimer, context: context)
357+
self.runTimeoutAction(.clearIdleWriteTimeoutTimer, context: context)
356358

357359
switch finalAction {
358360
case .close(let writePromise):

Sources/AsyncHTTPClient/ConnectionPool/HTTP2/HTTP2ClientRequestHandler.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ final class HTTP2ClientRequestHandler: ChannelDuplexHandler {
240240
self.request!.fail(error)
241241
self.request = nil
242242
self.runTimeoutAction(.clearIdleReadTimeoutTimer, context: context)
243+
self.runTimeoutAction(.clearIdleWriteTimeoutTimer, context: context)
243244
// No matter the error reason, we must always make sure the h2 stream is closed. Only
244245
// once the h2 stream is closed, it is released from the h2 multiplexer. The
245246
// HTTPRequestStateMachine may signal finalAction: .none in the error case (as this is
@@ -252,6 +253,7 @@ final class HTTP2ClientRequestHandler: ChannelDuplexHandler {
252253
self.request!.succeedRequest(finalParts)
253254
self.request = nil
254255
self.runTimeoutAction(.clearIdleReadTimeoutTimer, context: context)
256+
self.runTimeoutAction(.clearIdleWriteTimeoutTimer, context: context)
255257
self.runSuccessfulFinalAction(finalAction, context: context)
256258

257259
case .failSendBodyPart(let error, let writePromise), .failSendStreamFinished(let error, let writePromise):

0 commit comments

Comments
 (0)