diff options
author | Isaac Parker <parrotmac@gmail.com> | 2020-06-28 20:03:31 +0000 |
---|---|---|
committer | Isaac Parker <parrotmac@gmail.com> | 2020-06-28 20:03:31 +0000 |
commit | aa503c46c384c13fb02bf0cc98438336a161fcd4 (patch) | |
tree | ac6f8b3376946d1801273f125967004d0cb62d2a /src/args.rs | |
parent | Make clippy and cargo fmt happy (diff) | |
download | miniserve-aa503c46c384c13fb02bf0cc98438336a161fcd4.tar.gz miniserve-aa503c46c384c13fb02bf0cc98438336a161fcd4.zip |
Bind to random port when port 0 specified
Diffstat (limited to '')
-rw-r--r-- | src/args.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/args.rs b/src/args.rs index 7e30ee1..a5bcfea 100644 --- a/src/args.rs +++ b/src/args.rs @@ -1,6 +1,7 @@ use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; use std::path::PathBuf; use structopt::StructOpt; +use port_check::free_local_port; use crate::auth; use crate::errors::ContextualError; @@ -170,10 +171,15 @@ pub fn parse_args() -> crate::MiniserveConfig { let path_explicitly_chosen = args.path.is_some(); + let port = match args.port { + 0 => free_local_port().expect("no free ports available"), + _ => args.port, + }; + crate::MiniserveConfig { verbose: args.verbose, path: args.path.unwrap_or_else(|| PathBuf::from(".")), - port: args.port, + port, interfaces, auth: args.auth, path_explicitly_chosen, |