diff --git a/src/protos/xmpp/bind.rs b/src/protos/xmpp/bind.rs index 4186049..ebabff6 100644 --- a/src/protos/xmpp/bind.rs +++ b/src/protos/xmpp/bind.rs @@ -106,16 +106,19 @@ impl FromXml for BindRequest { match event { Event::Start(bytes) if bytes.name().0 == b"resource" => { let (namespace, event) = yield; - if let Event::Text(text) = event { - resource = Some(text.as_bytes().into()); - } - let (namespace, event) = yield; - if let Event::End(_) = event { - } else { + let Event::Text(text) = event else { return Err(ffail!("Unexpected XML event: {event:?}")); + }; + resource = Some(text.as_bytes().into()); + let (namespace, event) = yield; + let Event::End(bytes) = event else { + return Err(ffail!("Unexpected XML event: {event:?}")); + }; + if bytes.name().0 != b"resource" { + return Err(ffail!("Unexpected XML tag: {:?}", bytes.name())); } } - Event::End(bytes_) => { + Event::End(bytes) if bytes.name().0 == BindRequest::NAME.as_bytes() => { break; } _ => return Err(ffail!("Unexpected XML event: {event:?}")),