|
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