From 39a64ed64c3cd73ac2ba754cf023d9d3f31399f8 Mon Sep 17 00:00:00 2001 From: mdecimus Date: Fri, 9 Aug 2024 14:31:28 +0200 Subject: [PATCH] Fix autodiscover request parser --- crates/jmap/src/api/autoconfig.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/crates/jmap/src/api/autoconfig.rs b/crates/jmap/src/api/autoconfig.rs index 6622495e..c8c67ef9 100644 --- a/crates/jmap/src/api/autoconfig.rs +++ b/crates/jmap/src/api/autoconfig.rs @@ -255,6 +255,7 @@ fn parse_autodiscover_request(bytes: &[u8]) -> Result { )); } } + Ok(Event::Decl(_) | Event::Text(_)) => (), Err(e) => { return Err(format!( "Error at position {}: {:?}", @@ -262,9 +263,9 @@ fn parse_autodiscover_request(bytes: &[u8]) -> Result { e )) } - _ => { + Ok(event) => { return Err(format!( - "Expected tag {}, found unexpected EOF at position {}.", + "Expected tag {}, found unexpected event {event:?} at position {}.", tag_name, reader.buffer_position() )) @@ -286,3 +287,23 @@ fn parse_autodiscover_request(bytes: &[u8]) -> Result { reader.buffer_position() )) } + +#[cfg(test)] +mod tests { + + #[test] + fn parse_autodiscover() { + let r = r#" + + + email@example.com + http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a + + "#; + + assert_eq!( + super::parse_autodiscover_request(r.as_bytes()).unwrap(), + "email@example.com" + ); + } +}