@@ -141,6 +141,8 @@ impl<'a> ConnectionManager {
141141 ts_provider : & dyn TokenSourceProvider ,
142142 conn_options : & ' a ConnectionOptions ,
143143 ) -> Result < Vec < Channel > , Error > {
144+ let pool_size = Self :: get_pool_size ( pool_size) ;
145+
144146 let tls_config = ClientTlsConfig :: new ( ) . with_webpki_roots ( ) . domain_name ( domain_name) ;
145147 let mut conns = Vec :: with_capacity ( pool_size) ;
146148
@@ -182,6 +184,10 @@ impl<'a> ConnectionManager {
182184 Ok ( channel)
183185 }
184186
187+ fn get_pool_size ( pool_size : usize ) -> usize {
188+ pool_size. max ( 1 )
189+ }
190+
185191 pub fn num ( & self ) -> usize {
186192 self . inner . values . len ( )
187193 }
@@ -196,7 +202,7 @@ mod test {
196202 use std:: collections:: HashSet ;
197203 use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
198204
199- use crate :: conn:: AtomicRing ;
205+ use crate :: conn:: { AtomicRing , ConnectionManager } ;
200206
201207 #[ test]
202208 fn test_atomic_ring ( ) {
@@ -217,4 +223,11 @@ mod test {
217223 assert ! ( !values. insert( cm. next( ) ) ) ;
218224 assert_eq ! ( 3 , cm. index. load( Ordering :: SeqCst ) ) ;
219225 }
226+
227+ #[ test]
228+ fn test_get_pool_size ( ) {
229+ assert_eq ! ( 1 , ConnectionManager :: get_pool_size( 0 ) ) ;
230+ assert_eq ! ( 1 , ConnectionManager :: get_pool_size( 1 ) ) ;
231+ assert_eq ! ( 2 , ConnectionManager :: get_pool_size( 2 ) ) ;
232+ }
220233}
0 commit comments