diff options
author | Sven-Hendrik Haase <svenstaro@gmail.com> | 2020-06-29 13:45:32 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-29 13:45:32 +0000 |
commit | 865e8cce79f3a03151418519d5614403fb2dc9af (patch) | |
tree | adf1141de7bf6fae74f492f1e8a519d77c42fe25 /src | |
parent | Start 0.8.0 (diff) | |
parent | Cast port to u16 (diff) | |
download | miniserve-865e8cce79f3a03151418519d5614403fb2dc9af.tar.gz miniserve-865e8cce79f3a03151418519d5614403fb2dc9af.zip |
Merge pull request #327 from parrotmac/ip/0-random-port
Bind to random available port when port 0 specified
Diffstat (limited to 'src')
-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, |