chiark / gitweb /
server: Move listening address config resolution to config
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 28 Mar 2022 01:08:22 +0000 (02:08 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 28 Mar 2022 01:40:31 +0000 (02:40 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/main.rs
src/config.rs

index f472430adf58fa248e2e3777ca16e29617d20bf6..b1113768021b9d10a5e2ba7a95b2298bab782af1 100644 (file)
@@ -532,14 +532,7 @@ async fn main() -> Result<(),StartupError> {
   let mut http = http
     .disable_signals();
 
-  let addrs: &[&dyn IpAddress] = &[
-    &Ipv6Addr::LOCALHOST,
-    &Ipv4Addr::LOCALHOST,
-  ];
-  let port = c.http_port.unwrap_or(8000);
-
-  for addr in addrs {
-    let addr = addr.with_port(port);
+  for addr in &c.listen {
     http = http.bind(addr)
       .with_context(|| format!("bind {:?}", addr))?;
   }
index ef2cc6cad0d77dbc672511ffe03ca6f9f1d2ffc5..d3cd1182032a87ca0e08ba1bec11816040c296cc 100644 (file)
@@ -63,7 +63,7 @@ pub struct ServerConfig {
   save_dir: String,
   pub command_socket: String,
   pub debug: bool,
-  pub http_port: Option<u16>,
+  pub listen: Vec<SocketAddr>,
   pub public_url: String,
   pub sse_wildcard_url: Option<(String, String)>,
   pub template_dir: String,
@@ -281,9 +281,18 @@ impl ServerConfigSpec {
 
     let check_bundled_sources = check_bundled_sources.unwrap_or(true); 
 
+    let http_port = http_port.unwrap_or(8000);
+    let addrs: &[&dyn IpAddress] = &[
+      &Ipv6Addr::LOCALHOST,
+      &Ipv4Addr::LOCALHOST,
+    ];
+    let listen = addrs.iter()
+      .map(|addr| addr.with_port(http_port))
+      .collect();
+
     let server = ServerConfig {
       save_dir, command_socket, debug,
-      http_port, public_url, sse_wildcard_url,
+      listen, public_url, sse_wildcard_url,
       template_dir, specs_dir, nwtemplate_dir, wasm_dir, libexec_dir,
       bundled_sources, shapelibs, sendmail, usvg_bin,
       debug_js_inject, check_bundled_sources, game_rng, prctx,