diff --git a/Cargo.lock b/Cargo.lock index b3d0287..5ebce9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4532,11 +4532,13 @@ dependencies = [ "futures-util", "http 1.3.1", "http-body 1.0.1", + "http-body-util", "iri-string", "pin-project-lite", "tower", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -4553,9 +4555,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ "log", "pin-project-lite", @@ -4577,9 +4579,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -4588,9 +4590,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", "valuable", diff --git a/Cargo.toml b/Cargo.toml index 8670bcf..25cf4a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ tokio = { version = "1.48", features = [ "sync", "io-util", ] } -tracing = "0.1.41" +tracing = "0.1.43" tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } [package] diff --git a/netmito/Cargo.toml b/netmito/Cargo.toml index 31a843c..dd675e1 100644 --- a/netmito/Cargo.toml +++ b/netmito/Cargo.toml @@ -69,7 +69,7 @@ time = { version = "0.3.44", features = ["serde-human-readable"] } tokio = { workspace = true } tokio-tar = "0.3.1" tokio-util = { version = "0.7.16", features = ["rt"] } -tower-http = { version = "0.6.6", features = ["cors"] } +tower-http = { version = "0.6.6", features = ["cors", "catch-panic"] } tracing = { workspace = true } tracing-appender = "0.2.3" tracing-subscriber = { workspace = true } diff --git a/netmito/src/api/mod.rs b/netmito/src/api/mod.rs index d288518..184e867 100644 --- a/netmito/src/api/mod.rs +++ b/netmito/src/api/mod.rs @@ -24,6 +24,7 @@ use axum::{ use http_body_util::BodyExt; use serde_json::json; use tokio_util::sync::CancellationToken; +use tower_http::catch_panic::CatchPanicLayer; use tower_http::cors::CorsLayer; use crate::{ @@ -63,6 +64,7 @@ pub fn router(st: InfraPool, cancel_token: CancellationToken) -> Router { .nest("/tasks", tasks::tasks_router(st.clone())) .with_state(st) .layer(CorsLayer::permissive()) + .layer(CatchPanicLayer::new()) } #[cfg(feature = "debugging")] { @@ -93,6 +95,7 @@ pub fn router(st: InfraPool, cancel_token: CancellationToken) -> Router { .nest("/tasks", tasks::tasks_router(st.clone())) .with_state(st) .layer(CorsLayer::permissive()) + .layer(CatchPanicLayer::new()) .layer(middleware::from_fn(print_request_addr)) .layer(middleware::from_fn(print_request_response)) }