Compare commits

...

1 Commits

Author SHA1 Message Date
409
51fdaa4120 improve Server::run 2025-06-18 13:17:45 +02:00

View File

@@ -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}");