diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-05 13:00:26 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-05 13:00:26 +0100 |
commit | 96da4a575ebcfa38ab0a789ac8c25a0af03896a7 (patch) | |
tree | dae4d713031326241b08ba224df7a86faee2961c | |
parent | 27a503c1a92c8f8b0e398187d58e677ecf68e915 (diff) | |
download | gnix-96da4a575ebcfa38ab0a789ac8c25a0af03896a7.tar gnix-96da4a575ebcfa38ab0a789ac8c25a0af03896a7.tar.bz2 gnix-96da4a575ebcfa38ab0a789ac8c25a0af03896a7.tar.zst |
fix fallback module
-rw-r--r-- | src/modules/fallback.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/modules/fallback.rs b/src/modules/fallback.rs index b0deed1..6a5caaa 100644 --- a/src/modules/fallback.rs +++ b/src/modules/fallback.rs @@ -36,7 +36,7 @@ impl Node for Fallback { for (i, h) in self.0.iter().enumerate() { let last = i == self.0.len() - 1; - let resp = h + let res = h .handle( context, Request::from_parts( @@ -44,13 +44,17 @@ impl Node for Fallback { BoxBody::new(Full::new(body.clone()).map_err(|x| match x {})), ), ) - .await?; - if resp.status().is_success() - || resp.status().is_redirection() - || resp.status().is_informational() - || last - { - return Ok(resp); + .await; + if last { + return res; + } + if let Ok(resp) = res { + if resp.status().is_success() + || resp.status().is_redirection() + || resp.status().is_informational() + { + return Ok(resp); + } } } return Err(ServiceError::CustomStatic( |