diff options
author | Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com> | 2021-04-18 15:55:35 +0000 |
---|---|---|
committer | Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com> | 2021-08-30 04:00:59 +0000 |
commit | af7a760f24ca4d5a72d5b5d9e2dbf95465e6a867 (patch) | |
tree | 518efac7cef34ccc481505db3ae5ce678e753fcc /src/main.rs | |
parent | Merge pull request #587 from svenstaro/switch-structopt-to-clap (diff) | |
download | miniserve-af7a760f24ca4d5a72d5b5d9e2dbf95465e6a867.tar.gz miniserve-af7a760f24ca4d5a72d5b5d9e2dbf95465e6a867.zip |
Fail if any address fails to bind
Diffstat (limited to '')
-rw-r--r-- | src/main.rs | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/main.rs b/src/main.rs index c1d17b4..4ce2bd1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -240,25 +240,20 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> { .default_service(web::get().to(error_404)) }); - #[cfg(feature = "tls")] - let srv = if let Some(tls_config) = miniserve_config.tls_rustls_config { - srv.bind_rustls(socket_addresses.as_slice(), tls_config) - .map_err(|e| ContextualError::IoError("Failed to bind server".to_string(), e))? - .shutdown_timeout(0) - .run() - } else { - srv.bind(socket_addresses.as_slice()) - .map_err(|e| ContextualError::IoError("Failed to bind server".to_string(), e))? - .shutdown_timeout(0) - .run() - }; + let srv = socket_addresses.iter().try_fold(srv, |srv, addr| { + #[cfg(feature = "tls")] + let srv = match &miniserve_config.tls_rustls_config { + Some(tls_config) => srv.bind_rustls(addr, tls_config.clone()), + None => srv.bind(addr), + }; + + #[cfg(not(feature = "tls"))] + let srv = srv.bind(addr); + + srv.map_err(|e| ContextualError::IoError(format!("Failed to bind server to {}", addr), e)) + })?; - #[cfg(not(feature = "tls"))] - let srv = srv - .bind(socket_addresses.as_slice()) - .map_err(|e| ContextualError::IoError("Failed to bind server".to_string(), e))? - .shutdown_timeout(0) - .run(); + let srv = srv.shutdown_timeout(0).run(); println!( "Serving path {path} at {addresses}", |