diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-25 16:52:27 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-25 21:16:25 +0100 |
commit | 65ceb5683340726ff2ee831181dd9d60da2456b3 (patch) | |
tree | 9f1706c523bceff033a0f2482a42c4cb1a5566e9 | |
parent | c9a0d6d32295303183a895eaa2e55d4be91275f2 (diff) | |
download | gnix-65ceb5683340726ff2ee831181dd9d60da2456b3.tar gnix-65ceb5683340726ff2ee831181dd9d60da2456b3.tar.bz2 gnix-65ceb5683340726ff2ee831181dd9d60da2456b3.tar.zst |
fix query discarded when capture in !paths
-rw-r--r-- | src/modules/paths.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/modules/paths.rs b/src/modules/paths.rs index 755d550..3dc7596 100644 --- a/src/modules/paths.rs +++ b/src/modules/paths.rs @@ -65,8 +65,16 @@ impl Node for Paths { let mut parts = http::uri::Parts::default(); parts.scheme = request.uri().scheme().cloned(); parts.authority = request.uri().authority().cloned(); - parts.path_and_query = - Some(rest.as_str().parse().map_err(|_| ServiceError::Other)?); + if let Some(q) = request.uri().query() { + parts.path_and_query = Some( + format!("{}?{}", rest.as_str(), q) + .parse() + .map_err(|_| ServiceError::Other)?, + ); + } else { + parts.path_and_query = + Some(rest.as_str().parse().map_err(|_| ServiceError::Other)?); + } *request.uri_mut() = Uri::from_parts(parts).map_err(|_| ServiceError::InvalidUri)? } |