@@ -57,7 +57,6 @@ extension HTTPConnectionPool {
5757 case cleanupConnections( CleanupContext , isShutdown: IsShutdown )
5858 case closeConnectionAndCreateConnection(
5959 closeConnection: Connection ,
60- isShutdown: IsShutdown ,
6160 newConnectionID: Connection . ID ,
6261 on: EventLoop
6362 )
@@ -441,7 +440,6 @@ extension HTTPConnectionPool.StateMachine {
441440 )
442441 case closeConnectionAndCreateConnection(
443442 closeConnection: HTTPConnectionPool . Connection ,
444- isShutdown: HTTPConnectionPool . StateMachine . ConnectionAction . IsShutdown ,
445443 newConnectionID: HTTPConnectionPool . Connection . ID ,
446444 on: EventLoop
447445 )
@@ -472,13 +470,11 @@ extension HTTPConnectionPool.StateMachine.ConnectionAction {
472470 self = . closeConnection( connection, isShutdown: isShutdown)
473471 case . closeConnectionAndCreateConnection(
474472 let closeConnection,
475- let isShutdown,
476473 let newConnectionID,
477474 let eventLoop
478475 ) :
479476 self = . closeConnectionAndCreateConnection(
480477 closeConnection: closeConnection,
481- isShutdown: isShutdown,
482478 newConnectionID: newConnectionID,
483479 on: eventLoop
484480 )
@@ -510,28 +506,14 @@ extension HTTPConnectionPool.StateMachine.ConnectionAction {
510506 )
511507 case . closeConnectionAndCreateConnection(
512508 closeConnection: let connection,
513- let isShutdown,
514509 newConnectionID: _,
515510 on: _
516511 ) :
517512 // This event can only come _from_ the HTTP/1 pool, migrating to HTTP/2. We do not do prewarmed HTTP/2 connections,
518513 // so we can ignore the request for a new connection. This is thus the same as the case below.
519- fallthrough
514+ return Self . closeConnection ( connection , isShutdown : . no , migrationAction : migrationAction )
520515 case . closeConnection( let connection, let isShutdown) :
521- guard isShutdown == . no else {
522- precondition (
523- migrationAction. closeConnections. isEmpty && migrationAction. createConnections. isEmpty,
524- " migration actions are not supported during shutdown "
525- )
526- return . closeConnection( connection, isShutdown: isShutdown)
527- }
528- var closeConnections = migrationAction. closeConnections
529- closeConnections. append ( connection)
530- return . migration(
531- createConnections: migrationAction. createConnections,
532- closeConnections: closeConnections,
533- scheduleTimeout: nil
534- )
516+ return Self . closeConnection ( connection, isShutdown: isShutdown, migrationAction: migrationAction)
535517 case . scheduleTimeoutTimerAndCreateConnection(
536518 timeoutID: let connectionID,
537519 newConnectionID: _,
@@ -548,4 +530,25 @@ extension HTTPConnectionPool.StateMachine.ConnectionAction {
548530 )
549531 }
550532 }
533+
534+ private static func closeConnection(
535+ _ connection: HTTPConnectionPool . Connection ,
536+ isShutdown: HTTPConnectionPool . StateMachine . ConnectionAction . IsShutdown ,
537+ migrationAction: HTTPConnectionPool . StateMachine . ConnectionMigrationAction
538+ ) -> Self {
539+ guard isShutdown == . no else {
540+ precondition (
541+ migrationAction. closeConnections. isEmpty && migrationAction. createConnections. isEmpty,
542+ " migration actions are not supported during shutdown "
543+ )
544+ return . closeConnection( connection, isShutdown: isShutdown)
545+ }
546+ var closeConnections = migrationAction. closeConnections
547+ closeConnections. append ( connection)
548+ return . migration(
549+ createConnections: migrationAction. createConnections,
550+ closeConnections: closeConnections,
551+ scheduleTimeout: nil
552+ )
553+ }
551554}
0 commit comments