From 779ce5b2e1133b7b43dd1221ad65d4d2534ad860 Mon Sep 17 00:00:00 2001 From: Gabor Szabo Date: Wed, 2 Apr 2025 11:26:46 +0300 Subject: [PATCH] When running serve check if port is available Give a nice explanation if it is used or if it is a protected port. Closes #2631 --- src/cmd/serve.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs index 7b1ccab6eb..cd371a682f 100644 --- a/src/cmd/serve.rs +++ b/src/cmd/serve.rs @@ -69,6 +69,12 @@ pub fn execute(args: &ArgMatches) -> Result<()> { update_config(&mut book); book.build()?; + let listener = std::net::TcpListener::bind(&address); + if listener.is_err() { + return Err(anyhow::anyhow!("Unable to bind to address: {} (It is either a protected port or it is used already. Try to another port or use --port 0 to select a random port. ", address).into()); + } + drop(listener); + let sockaddr: SocketAddr = address .to_socket_addrs()? .next()