diff options
author | Timo Kösters <timo@koesters.xyz> | 2023-03-17 22:44:50 +0100 |
---|---|---|
committer | Timo Kösters <timo@koesters.xyz> | 2023-03-17 22:45:13 +0100 |
commit | da3871f39a3a0a7b5b34e2110e41717c33754a73 (patch) | |
tree | 9de55109ece303aaa36a60ad1222cc59a14dadbc | |
parent | 664ee7d89a7f9add52be519dcce1e2d333506ed1 (diff) | |
download | conduit-da3871f39a3a0a7b5b34e2110e41717c33754a73.zip |
fix: let requests continue event if client disconnects
-rw-r--r-- | src/main.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs index fe6cfc0..a51416d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -147,6 +147,7 @@ async fn run_server() -> io::Result<()> { let middlewares = ServiceBuilder::new() .sensitive_headers([header::AUTHORIZATION]) + .layer(axum::middleware::from_fn(spawn_task)) .layer( TraceLayer::new_for_http().make_span_with(|request: &http::Request<_>| { let path = if let Some(path) = request.extensions().get::<MatchedPath>() { @@ -221,6 +222,15 @@ async fn run_server() -> io::Result<()> { Ok(()) } +async fn spawn_task<B: Send + 'static>( + req: axum::http::Request<B>, + next: axum::middleware::Next<B>, +) -> std::result::Result<axum::response::Response, StatusCode> { + tokio::spawn(next.run(req)) + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR) +} + async fn unrecognized_method<B>( req: axum::http::Request<B>, next: axum::middleware::Next<B>, |