From 51fdaa41208db6f8571e905f63bcb428c99a2be8 Mon Sep 17 00:00:00 2001 From: 409 <409dev@protonmail.com> Date: Wed, 18 Jun 2025 13:17:45 +0200 Subject: [PATCH] improve `Server::run` --- src/server.rs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/server.rs b/src/server.rs index 994a9c2..b07a83a 100644 --- a/src/server.rs +++ b/src/server.rs @@ -43,25 +43,27 @@ impl Server { pub async fn run(&mut self, mut shutdown: oneshot::Receiver<()>) -> Result<()> { let shutdown = &mut shutdown; + let result = tokio::select! { + biased; + v = self._run() => v, + _ = &mut *shutdown => Ok(()), + }; + + log::info!("Shutting down"); + self.db.shutdown().await; + let _ = (&mut self.expiration_manager_handle).await; + + result + } + + pub async fn _run(&mut self) -> Result<()> { loop { let permit = Arc::clone(&self.connection_limit) .acquire_owned() .await .unwrap(); - let Some(socket) = ({ - tokio::select! { - socket = self.listener.accept() => Some(socket?.0), - _ = &mut *shutdown => None, - } - }) else { - log::info!("Shutting down"); - - self.db.shutdown().await; - let _ = (&mut self.expiration_manager_handle).await; - - return Ok(()); - }; + let socket = self.listener.accept().await?.0; let addr = socket.peer_addr()?; @@ -71,7 +73,7 @@ impl Server { tokio::spawn(async move { log::debug!("Spawned a new connection handler: {addr}"); if let Err(e) = handler.run().await { - log::debug!("Handler::run error: {e:?}"); + log::error!("Handler::run: {e:?}"); } log::debug!("Connection handler ended: {addr}");