chiark / gitweb /
Prep for hyper 1: Move saddr conversion earlier
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 2 Feb 2025 13:46:48 +0000 (13:46 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 2 Feb 2025 13:59:50 +0000 (13:59 +0000)
And prepare for doing the listening here.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
server/server.rs

index 18f69fedfdcd7950a4f69e76c0e05a0e75792e90..a5c71a302e9dbef45d920eba7610c84c6638a77d 100644 (file)
@@ -251,7 +251,18 @@ async fn async_main(opts: Opts, daemon: Option<Daemoniser>) {
       }), format!("client {}", &ic)));
     }
 
-    for saddr in &global.config.addrs {
+    let listeners = {
+      let mut listeners = vec![];
+      for saddr in &global.config.addrs {
+        let saddr = SocketAddr::new(*saddr, global.config.port);
+        // TODO move bind() here
+        let listener = ();
+        listeners.push((saddr, listener));
+      }
+      listeners
+    };
+
+    for (saddr, listener) in listeners {
       let make_service = hyper::service::make_service_fn({
         let global = global.clone();
         move |conn: &hyper::server::conn::AddrStream| {
@@ -278,7 +289,7 @@ async fn async_main(opts: Opts, daemon: Option<Daemoniser>) {
         }
       });
 
-      let saddr = SocketAddr::new(*saddr, global.config.port);
+      let () = listener; // TODO move bind() earlier.
       let server = hyper::Server::try_bind(&saddr)
         .context("bind")?
         .http1_preserve_header_case(true)