Skip to content

Commit 0cf06f0

Browse files
committed
xmpp: Allow <confirm/> in message with empty body
skip-changelog: bugfix for previous not yet released change
1 parent 9d91b02 commit 0cf06f0

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

xmpp/src/message/receive/chat.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,26 @@ pub async fn handle_message_chat(
2020
) {
2121
let langs: Vec<&str> = agent.lang.iter().map(String::as_str).collect();
2222

23+
let confirm = message.extract_valid_payload::<Confirm>();
24+
let is_muc_pm = message.extract_valid_payload::<MucUser>().is_some();
25+
26+
// First process events that do not require the message body
27+
if !is_muc_pm && confirm.is_some() {
28+
events.push(Event::AuthConfirm(
29+
from.to_bare(),
30+
confirm.unwrap(),
31+
time_info,
32+
));
33+
return;
34+
}
35+
36+
// For other events, a message body is required, so stop here if there isn't one
2337
let Some((_lang, body)) = message.get_best_body_cloned(langs) else {
2438
debug!("Received normal/chat message without body:\n{:#?}", message);
2539
return;
2640
};
2741

28-
let is_muc_pm = message.extract_valid_payload::<MucUser>().is_some();
2942
let correction = message.extract_valid_payload::<Replace>();
30-
let confirm = message.extract_valid_payload::<Confirm>();
3143

3244
if is_muc_pm {
3345
if from.resource().is_none() {
@@ -58,8 +70,6 @@ pub async fn handle_message_chat(
5870
let event = if let Some(correction) = correction {
5971
// TODO: Check that correction is valid (only for last N minutes or last N messages)
6072
Event::ChatMessageCorrection(correction.id, from.to_bare(), body.clone(), time_info)
61-
} else if let Some(confirm) = confirm {
62-
Event::AuthConfirm(from.to_bare(), confirm, time_info)
6373
} else {
6474
Event::ChatMessage(message.id.clone(), from.to_bare(), body, time_info)
6575
};

0 commit comments

Comments
 (0)