@@ -63,9 +63,9 @@ impl Future for Recycler {
63
63
let mut close = self . inner . close . load ( Ordering :: Acquire ) ;
64
64
65
65
macro_rules! conn_return {
66
- ( $self: ident, $conn: ident) => { {
66
+ ( $self: ident, $conn: ident, $pool_is_closed : expr ) => { {
67
67
let mut exchange = $self. inner. exchange. lock( ) . unwrap( ) ;
68
- if exchange. available. len( ) >= $self. pool_opts. active_bound( ) {
68
+ if $pool_is_closed || exchange. available. len( ) >= $self. pool_opts. active_bound( ) {
69
69
drop( exchange) ;
70
70
$self. discard. push( $conn. close_conn( ) . boxed( ) ) ;
71
71
} else {
@@ -89,7 +89,7 @@ impl Future for Recycler {
89
89
} else if $conn. inner. reset_upon_returning_to_a_pool {
90
90
$self. reset. push( $conn. reset_for_pool( ) . boxed( ) ) ;
91
91
} else {
92
- conn_return!( $self, $conn) ;
92
+ conn_return!( $self, $conn, false ) ;
93
93
}
94
94
} ;
95
95
}
@@ -152,7 +152,7 @@ impl Future for Recycler {
152
152
loop {
153
153
match Pin :: new ( & mut self . reset ) . poll_next ( cx) {
154
154
Poll :: Pending | Poll :: Ready ( None ) => break ,
155
- Poll :: Ready ( Some ( Ok ( conn) ) ) => conn_return ! ( self , conn) ,
155
+ Poll :: Ready ( Some ( Ok ( conn) ) ) => conn_return ! ( self , conn, close ) ,
156
156
Poll :: Ready ( Some ( Err ( e) ) ) => {
157
157
// an error during reset.
158
158
// replace with a new connection
0 commit comments