|
20 | 20 |
|
21 | 21 | use std::error::Error; |
22 | 22 | use std::io; |
23 | | -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr}; |
| 23 | +use std::net::{IpAddr, Ipv4Addr, Shutdown, SocketAddr}; |
24 | 24 | use std::sync::atomic::{AtomicBool, AtomicU16, Ordering}; |
25 | 25 | use std::sync::mpsc::channel; |
26 | 26 | use std::sync::{Arc, Mutex}; |
@@ -401,13 +401,19 @@ pub fn serve(args: ArgMatches) -> BoxResult<()> { |
401 | 401 | log::debug!("limiting service to {} concurrent clients", client_limit); |
402 | 402 | } |
403 | 403 |
|
| 404 | + let addr = args |
| 405 | + .value_of("bind") |
| 406 | + .unwrap_or("0.0.0.0") |
| 407 | + .parse::<IpAddr>() |
| 408 | + .unwrap_or(IpAddr::V4(Ipv4Addr::UNSPECIFIED)); |
| 409 | + |
404 | 410 | //start listening for connections |
405 | 411 | let port: u16 = args.value_of("port").unwrap().parse()?; |
406 | 412 | let listener: TcpListener = if args.is_present("version6") { |
407 | | - TcpListener::bind(&SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), port)) |
| 413 | + TcpListener::bind(&SocketAddr::new(addr, port)) |
408 | 414 | .unwrap_or_else(|_| panic!("failed to bind TCP socket, port {}", port)) |
409 | 415 | } else { |
410 | | - TcpListener::bind(&SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), port)) |
| 416 | + TcpListener::bind(&SocketAddr::new(addr, port)) |
411 | 417 | .unwrap_or_else(|_| panic!("failed to bind TCP socket, port {}", port)) |
412 | 418 | }; |
413 | 419 | log::info!("server listening on {}", listener.local_addr()?); |
|
0 commit comments