aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2020-06-29 13:45:32 +0000
committerGitHub <noreply@github.com>2020-06-29 13:45:32 +0000
commit865e8cce79f3a03151418519d5614403fb2dc9af (patch)
treeadf1141de7bf6fae74f492f1e8a519d77c42fe25 /src
parentStart 0.8.0 (diff)
parentCast port to u16 (diff)
downloadminiserve-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.rs8
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,