diff options
Diffstat (limited to 'src')
-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}", |