@@ -401,15 +401,22 @@ pub fn serve(args: ArgMatches) -> BoxResult<()> {
401
401
log:: debug!( "limiting service to {} concurrent clients" , client_limit) ;
402
402
}
403
403
404
- //start listening for connections
405
- let port: u16 = args. value_of ( "port" ) . unwrap ( ) . parse ( ) ?;
406
- let listener: TcpListener = if args. is_present ( "version6" ) {
407
- TcpListener :: bind ( & SocketAddr :: new ( IpAddr :: V6 ( Ipv6Addr :: UNSPECIFIED ) , port) )
408
- . unwrap_or_else ( |_| panic ! ( "failed to bind TCP socket, port {}" , port) )
404
+ let ( unspec_str, unspec) = if args. is_present ( "version6" ) {
405
+ ( "::" , IpAddr :: V6 ( Ipv6Addr :: UNSPECIFIED ) )
409
406
} else {
410
- TcpListener :: bind ( & SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) , port) )
411
- . unwrap_or_else ( |_| panic ! ( "failed to bind TCP socket, port {}" , port) )
407
+ ( "0.0.0.0" , IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) )
412
408
} ;
409
+
410
+ let addr = args
411
+ . value_of ( "bind" )
412
+ . unwrap_or ( unspec_str)
413
+ . parse :: < IpAddr > ( )
414
+ . unwrap_or ( unspec) ;
415
+
416
+ //start listening for connections
417
+ let port: u16 = args. value_of ( "port" ) . unwrap ( ) . parse ( ) ?;
418
+ let listener: TcpListener = TcpListener :: bind ( & SocketAddr :: new ( addr, port) )
419
+ . unwrap_or_else ( |_| panic ! ( "failed to bind TCP socket, port {}" , port) ) ;
413
420
log:: info!( "server listening on {}" , listener. local_addr( ) ?) ;
414
421
415
422
let mio_token = Token ( 0 ) ;
0 commit comments