summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-01-25 16:52:27 +0100
committermetamuffin <metamuffin@disroot.org>2025-01-25 21:16:25 +0100
commit65ceb5683340726ff2ee831181dd9d60da2456b3 (patch)
tree9f1706c523bceff033a0f2482a42c4cb1a5566e9
parentc9a0d6d32295303183a895eaa2e55d4be91275f2 (diff)
downloadgnix-65ceb5683340726ff2ee831181dd9d60da2456b3.tar
gnix-65ceb5683340726ff2ee831181dd9d60da2456b3.tar.bz2
gnix-65ceb5683340726ff2ee831181dd9d60da2456b3.tar.zst
fix query discarded when capture in !paths
-rw-r--r--src/modules/paths.rs12
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)?
}