From 2b3f337b0ba647dbd3383a524e8d772cd5441e49 Mon Sep 17 00:00:00 2001 From: fetch <108630700+fetchfern@users.noreply.github.com> Date: Mon, 22 Apr 2024 22:25:15 -0400 Subject: [PATCH] chore: log webserver exit status --- crates/alerion_core/src/lib.rs | 12 ++++++++---- crates/alerion_core/src/webserver.rs | 7 ++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/crates/alerion_core/src/lib.rs b/crates/alerion_core/src/lib.rs index 0032578..175f4d4 100644 --- a/crates/alerion_core/src/lib.rs +++ b/crates/alerion_core/src/lib.rs @@ -26,11 +26,15 @@ pub async fn alerion_main() -> anyhow::Result<()> { //server_pool.create_server("0e4059ca-d79b-46a5-8ec4-95bd0736d150".try_into().unwrap()).await; - // there is a low likelyhood this will actually block, and if it does - // it will block only once for a short amount of time, so it's no big deal. - let webserver = webserver::serve(config); + let webserver_handle = tokio::spawn(async move { + let cfg = config.clone(); + let result = webserver::serve(cfg).await; - let webserver_handle = tokio::spawn(webserver); + match result { + Ok(()) => tracing::info!("webserver exited gracefully"), + Err(e) => tracing::error!("webserver exited with an error: {e}"), + } + }); let mut handles = FuturesUnordered::new(); handles.push(webserver_handle); diff --git a/crates/alerion_core/src/webserver.rs b/crates/alerion_core/src/webserver.rs index f70292e..cc124ec 100644 --- a/crates/alerion_core/src/webserver.rs +++ b/crates/alerion_core/src/webserver.rs @@ -1,6 +1,7 @@ #![deny(dead_code)] use std::collections::HashSet; use std::env::consts::{ARCH, OS}; +use std::io; use bitflags::bitflags; use futures::{SinkExt, StreamExt}; @@ -265,7 +266,7 @@ async fn return_auth_details(Path(_identifier): Path) -> impl IntoRespon todo!() } -pub async fn serve(config: AlerionConfig) { +pub async fn serve(config: AlerionConfig) -> io::Result<()> { let system_endpoint = get(process_system_query) .options(endpoint::make_sync(|_| StatusCode::NO_CONTENT)) .with(Cors::new().allow_credentials(true)) @@ -279,9 +280,9 @@ pub async fn serve(config: AlerionConfig) { ), ); - let _ = Server::new(TcpListener::bind((config.api.host, config.api.port))) + Server::new(TcpListener::bind((config.api.host, config.api.port))) .run(api) - .await; + .await } pub mod middleware;