From 3227841d7960e4cf3f5a19cc705f5cd89da4f0a2 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 2 Feb 2025 13:36:24 +0000 Subject: [PATCH] Prep for hyper 1: Reorganise service_fn call We're going to want this to be more static. The future-lifted map doesn't have the right lifetimes. Instead, use an async block and un-lifted unwrap_or_else. This will reduce the size of the eventual diff. Signed-off-by: Ian Jackson --- server/server.rs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/server/server.rs b/server/server.rs index 0ff718b..f4bcb3a 100644 --- a/server/server.rs +++ b/server/server.rs @@ -258,14 +258,20 @@ async fn async_main(opts: Opts, daemon: Option) { let global = global.clone(); let caddr = Arc::new(format!("[{}]", conn.remote_addr())); - let service = hyper::service::service_fn(move |req| { - AssertUnwindSafe( - sweb::handle(caddr.clone(), global.clone(), req) - ) - .catch_unwind() - .map(|r| r.unwrap_or_else(|_|{ - crash(Err("panicked".into()), "webserver request task") - })) + let service = hyper::service::service_fn({ + move |req| { + let global = global.clone(); + let caddr = caddr.clone(); + async move { + AssertUnwindSafe( + sweb::handle(caddr, global, req) + ) + .catch_unwind().await + .unwrap_or_else(|_| { + crash(Err("panicked".into()), "webserver request task") + }) + } + } }); async { Ok::<_, Void>(service) } } -- 2.30.2