From 50bfb0fe5ea9a0a23f724449152ab62630ce8f59 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 30 Nov 2025 12:35:04 +0000 Subject: [PATCH] Provide default for empty PathAndQuery (Sentry ID c09f58adf5...) Signed-off-by: Jason Volk --- src/api/router/auth/server.rs | 9 +++++---- src/router/layers.rs | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/api/router/auth/server.rs b/src/api/router/auth/server.rs index 952e11ac..cb785c34 100644 --- a/src/api/router/auth/server.rs +++ b/src/api/router/auth/server.rs @@ -1,5 +1,6 @@ use axum::RequestPartsExt; use axum_extra::{TypedHeader, headers::Authorization, typed_header::TypedHeaderRejectionReason}; +use http::uri::PathAndQuery; use ruma::{ CanonicalJsonName, CanonicalJsonObject, CanonicalJsonValue, api::federation::authentication::XMatrix, @@ -30,8 +31,8 @@ pub(super) async fn auth_server( .parts .uri .path_and_query() - .expect("all requests have a path") - .to_string(); + .map(PathAndQuery::as_str) + .unwrap_or("/"); let signature: [Member; 1] = [(x_matrix.key.as_str().into(), Value::String(x_matrix.sig.to_string()))]; @@ -45,7 +46,7 @@ pub(super) async fn auth_server( ("method".into(), Value::String(request.parts.method.as_str().into())), ("origin".into(), Value::String(origin.as_str().into())), ("signatures".into(), Value::Object(signatures.into())), - ("uri".into(), Value::String(signature_uri)), + ("uri".into(), Value::String(signature_uri.into())), ]; authorization.into() @@ -55,7 +56,7 @@ pub(super) async fn auth_server( ("method".into(), Value::String(request.parts.method.as_str().into())), ("origin".into(), Value::String(origin.as_str().into())), ("signatures".into(), Value::Object(signatures.into())), - ("uri".into(), Value::String(signature_uri)), + ("uri".into(), Value::String(signature_uri.into())), ]; authorization.into() diff --git a/src/router/layers.rs b/src/router/layers.rs index b8f2dc3c..0de5c9dd 100644 --- a/src/router/layers.rs +++ b/src/router/layers.rs @@ -8,6 +8,7 @@ use axum_client_ip::SecureClientIpSource; use http::{ HeaderValue, Method, StatusCode, header::{self, HeaderName}, + uri::PathAndQuery, }; use tower::ServiceBuilder; use tower_http::{ @@ -239,8 +240,8 @@ fn request_path_str(request: &http::Request) -> &str { request .uri() .path_and_query() - .expect("all requests have a path") - .as_str() + .map(PathAndQuery::as_str) + .unwrap_or("/") } fn truncated_matched_path(path: &MatchedPath) -> &str {