From a073c587448824c9922d8d80752be586717726f4 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 12 Jun 2016 12:50:49 +0200 Subject: parse real jid from muc mam messages. (disabled) parsing this is dangerous if server doesn't filter properly thus it is disabled in config --- .../eu/siacs/conversations/parser/MessageParser.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/main/java/eu/siacs/conversations/parser/MessageParser.java') diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 354128f0b..2883b9a5c 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -434,7 +434,21 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece message.setOob(isOob); message.markable = packet.hasChild("markable", "urn:xmpp:chat-markers:0"); if (conversationMultiMode) { - Jid trueCounterpart = conversation.getMucOptions().getTrueCounterpart(counterpart); + final Element item = mucUserElement == null ? null : mucUserElement.findChild("item"); + Jid trueCounterpart; + if (Config.PARSE_REAL_JID_FROM_MUC_MAM && query != null && item != null) { + trueCounterpart = item.getAttributeAsJid("jid"); + if (trueCounterpart != null) { + if (trueCounterpart.toBareJid().equals(account.getJid().toBareJid())) { + status = isTypeGroupChat ? Message.STATUS_SEND_RECEIVED : Message.STATUS_SEND; + } else { + status = Message.STATUS_RECEIVED; + } + message.setStatus(status); + } + } else { + trueCounterpart = conversation.getMucOptions().getTrueCounterpart(counterpart); + } message.setTrueCounterpart(trueCounterpart); if (!isTypeGroupChat) { message.setType(Message.TYPE_PRIVATE); -- cgit v1.2.3