From bc1300650bd3c728baca64d61f44fbda71b2d5bb Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sat, 15 Oct 2022 21:55:58 -0500 Subject: [PATCH] Interpret message retraction XEP-0424 as correction to empty string --- .../eu/siacs/conversations/parser/MessageParser.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 238519d240a8681bac1666c98249eb15f27972bc..188b568d156bd6a917176d8ca048d4f97f67ddc3 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -405,13 +405,21 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece if (timestamp == null) { timestamp = AbstractParser.parseTimestamp(original, AbstractParser.parseTimestamp(packet)); } - final LocalizedContent body = packet.getBody(); final Element mucUserElement = packet.findChild("x", Namespace.MUC_USER); final String pgpEncrypted = packet.findChildContent("x", "jabber:x:encrypted"); final Element replaceElement = packet.findChild("replace", "urn:xmpp:message-correct:0"); final Element oob = packet.findChild("x", Namespace.OOB); final String oobUrl = oob != null ? oob.findChildContent("url") : null; - final String replacementId = replaceElement == null ? null : replaceElement.getAttribute("id"); + String replacementId = replaceElement == null ? null : replaceElement.getAttribute("id"); + if (replacementId == null) { + Element fasten = packet.findChild("apply-to", "urn:xmpp:fasten:0"); + if (fasten != null && fasten.findChild("retract", "urn:xmpp:message-retract:0") != null) { + replacementId = fasten.getAttribute("id"); + packet.setBody(""); + } + } + final LocalizedContent body = packet.getBody(); + final Element axolotlEncrypted = packet.findChildEnsureSingle(XmppAxolotlMessage.CONTAINERTAG, AxolotlService.PEP_PREFIX); int status; final Jid counterpart;