@@ -102,12 +102,19 @@ extension HTTPConnectionPool {
102
102
_ request: Request ,
103
103
onRequired eventLoop: EventLoop
104
104
) -> Action {
105
- if let connection = self . connections. leaseStream ( onRequired: eventLoop) {
105
+ if let ( connection, context ) = self . connections. leaseStream ( onRequired: eventLoop) {
106
106
/// 1. we have a stream available and can execute the request immediately
107
- return . init(
108
- request: . executeRequest( request, connection, cancelTimeout: false ) ,
109
- connection: . cancelTimeoutTimer( connection. id)
110
- )
107
+ if context. wasIdle {
108
+ return . init(
109
+ request: . executeRequest( request, connection, cancelTimeout: false ) ,
110
+ connection: . cancelTimeoutTimer( connection. id)
111
+ )
112
+ } else {
113
+ return . init(
114
+ request: . executeRequest( request, connection, cancelTimeout: false ) ,
115
+ connection: . none
116
+ )
117
+ }
111
118
}
112
119
/// 2. No available stream so we definitely need to wait until we have one
113
120
self . requests. push ( request)
@@ -132,12 +139,19 @@ extension HTTPConnectionPool {
132
139
_ request: Request ,
133
140
onPreferred eventLoop: EventLoop
134
141
) -> Action {
135
- if let connection = self . connections. leaseStream ( onPreferred: eventLoop) {
142
+ if let ( connection, context ) = self . connections. leaseStream ( onPreferred: eventLoop) {
136
143
/// 1. we have a stream available and can execute the request immediately
137
- return . init(
138
- request: . executeRequest( request, connection, cancelTimeout: false ) ,
139
- connection: . cancelTimeoutTimer( connection. id)
140
- )
144
+ if context. wasIdle {
145
+ return . init(
146
+ request: . executeRequest( request, connection, cancelTimeout: false ) ,
147
+ connection: . cancelTimeoutTimer( connection. id)
148
+ )
149
+ } else {
150
+ return . init(
151
+ request: . executeRequest( request, connection, cancelTimeout: false ) ,
152
+ connection: . none
153
+ )
154
+ }
141
155
}
142
156
/// 2. No available stream so we definitely need to wait until we have one
143
157
self . requests. push ( request)
@@ -182,7 +196,7 @@ extension HTTPConnectionPool {
182
196
let remainingAvailableStreams = context. availableStreams - requestsToExecute. count
183
197
// use the remaining available streams for requests without a required event loop
184
198
requestsToExecute += self . requests. popFirst ( max: remainingAvailableStreams, for: nil )
185
- let connection = self . connections. leaseStreams ( at: index, count: requestsToExecute. count)
199
+ let ( connection, _ ) = self . connections. leaseStreams ( at: index, count: requestsToExecute. count)
186
200
187
201
let requestAction = { ( ) -> RequestAction in
188
202
if requestsToExecute. isEmpty {
0 commit comments