From 943b964da0775e5e1f9c7890dd6425b14604c9b1 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Sat, 1 Jun 2024 14:02:22 +0200 Subject: [PATCH] Add handling for empty PROPFIND body to comply with spec --- crates/dav/src/propfind.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/dav/src/propfind.rs b/crates/dav/src/propfind.rs index 641caf3..d1c2bf5 100644 --- a/crates/dav/src/propfind.rs +++ b/crates/dav/src/propfind.rs @@ -66,8 +66,15 @@ pub async fn route_propfind let resource_service = R::new(req, auth_info.clone(), path_components.clone()).await?; - let propfind: PropfindElement = - quick_xml::de::from_str(&body).map_err(Error::XmlDecodeError)?; + // A request body is optional. If empty we MUST return all props + let propfind: PropfindElement = if !body.is_empty() { + quick_xml::de::from_str(&body).map_err(Error::XmlDecodeError)? + } else { + PropfindElement { + prop: PropfindType::Allprop, + } + }; + let props = match propfind.prop { PropfindType::Allprop => { vec!["allprop".to_owned()]