summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTimo Kösters <timo@koesters.xyz>2023-03-17 22:44:50 +0100
committerTimo Kösters <timo@koesters.xyz>2023-03-17 22:45:13 +0100
commitda3871f39a3a0a7b5b34e2110e41717c33754a73 (patch)
tree9de55109ece303aaa36a60ad1222cc59a14dadbc /src
parent664ee7d89a7f9add52be519dcce1e2d333506ed1 (diff)
downloadconduit-da3871f39a3a0a7b5b34e2110e41717c33754a73.zip
fix: let requests continue event if client disconnects
Diffstat (limited to 'src')
-rw-r--r--src/main.rs10
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>,