File tree 1 file changed +13
-7
lines changed
1 file changed +13
-7
lines changed Original file line number Diff line number Diff line change @@ -390,13 +390,19 @@ impl RedisServer {
390
390
/// process, so this must be used with care (since here we only use it for tests, it's
391
391
/// mostly okay).
392
392
pub fn get_random_available_port ( ) -> u16 {
393
- let addr = & "127.0.0.1:0" . parse :: < SocketAddr > ( ) . unwrap ( ) . into ( ) ;
394
- let socket = Socket :: new ( Domain :: IPV4 , Type :: STREAM , None ) . unwrap ( ) ;
395
- socket. set_reuse_address ( true ) . unwrap ( ) ;
396
- socket. bind ( addr) . unwrap ( ) ;
397
- socket. listen ( 1 ) . unwrap ( ) ;
398
- let listener = TcpListener :: from ( socket) ;
399
- listener. local_addr ( ) . unwrap ( ) . port ( )
393
+ for _ in 0 ..10000 {
394
+ let addr = & "127.0.0.1:0" . parse :: < SocketAddr > ( ) . unwrap ( ) . into ( ) ;
395
+ let socket = Socket :: new ( Domain :: IPV4 , Type :: STREAM , None ) . unwrap ( ) ;
396
+ socket. set_reuse_address ( true ) . unwrap ( ) ;
397
+ socket. bind ( addr) . unwrap ( ) ;
398
+ socket. listen ( 1 ) . unwrap ( ) ;
399
+ let listener = TcpListener :: from ( socket) ;
400
+ let port = listener. local_addr ( ) . unwrap ( ) . port ( ) ;
401
+ if port < 55535 {
402
+ return port;
403
+ }
404
+ }
405
+ panic ! ( "Couldn't get a valid port" ) ;
400
406
}
401
407
402
408
impl Drop for RedisServer {
You can’t perform that action at this time.
0 commit comments