@@ -33,12 +33,17 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
3333 /// the currently executing request
3434 private var request : HTTPExecutableRequest ? {
3535 didSet {
36- if let request = request {
37- var requestLogger = request . logger
36+ if let newRequest = self . request {
37+ var requestLogger = newRequest . logger
3838 requestLogger [ metadataKey: " ahc-connection-id " ] = " \( self . connection. id) "
3939 self . logger = requestLogger
40+
41+ if let idleReadTimeout = newRequest. idleReadTimeout {
42+ self . idleReadTimeoutStateMachine = . init( timeAmount: idleReadTimeout)
43+ }
4044 } else {
4145 self . logger = self . backgroundLogger
46+ self . idleReadTimeoutStateMachine = nil
4247 }
4348 }
4449 }
@@ -100,7 +105,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
100105 }
101106
102107 func channelRead( context: ChannelHandlerContext , data: NIOAny ) {
103- let httpPart = unwrapInboundIn ( data)
108+ let httpPart = self . unwrapInboundIn ( data)
104109
105110 self . logger. trace ( " HTTP response part received " , metadata: [
106111 " ahc-http-part " : " \( httpPart) " ,
@@ -121,6 +126,17 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
121126 self . run ( action, context: context)
122127 }
123128
129+ func errorCaught( context: ChannelHandlerContext , error: Error ) {
130+ self . logger. trace ( " Error caught " , metadata: [
131+ " error " : " \( error) " ,
132+ ] )
133+
134+ let action = self . state. errorHappened ( error)
135+ self . run ( action, context: context)
136+ }
137+
138+ // MARK: Channel Outbound Handler
139+
124140 func write( context: ChannelHandlerContext , data: NIOAny , promise: EventLoopPromise < Void > ? ) {
125141 assert ( self . request == nil , " Only write to the ChannelHandler if you are sure, it is idle! " )
126142 let req = self . unwrapOutboundIn ( data)
@@ -145,15 +161,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
145161 self . run ( action, context: context)
146162 }
147163
148- func errorCaught( context: ChannelHandlerContext , error: Error ) {
149- self . logger. trace ( " Error caught " , metadata: [
150- " error " : " \( error) " ,
151- ] )
152-
153- let action = self . state. errorHappened ( error)
154- self . run ( action, context: context)
155- }
156-
157164 func triggerUserOutboundEvent( context: ChannelHandlerContext , event: Any , promise: EventLoopPromise < Void > ? ) {
158165 switch event {
159166 case HTTPConnectionEvent . cancelRequest:
@@ -246,7 +253,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
246253
247254 let oldRequest = self . request!
248255 self . request = nil
249- self . idleReadTimeoutStateMachine = nil
250256
251257 switch finalAction {
252258 case . close:
@@ -265,7 +271,6 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
265271 // see comment in the `succeedRequest` case.
266272 let oldRequest = self . request!
267273 self . request = nil
268- self . idleReadTimeoutStateMachine = nil
269274
270275 switch finalAction {
271276 case . close:
0 commit comments