aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2016-06-12 12:50:49 +0200
committerChristian Schneppe <christian@pix-art.de>2016-06-12 20:09:15 +0200
commita073c587448824c9922d8d80752be586717726f4 (patch)
treef90e6b7f5fd4e403c360899a035045f348b5c15b
parent4f4c5b7fd1adc4cbabf317190944d84730498db9 (diff)
parse real jid from muc mam messages. (disabled)
parsing this is dangerous if server doesn't filter properly thus it is disabled in config
Diffstat (limited to '')
-rw-r--r--src/main/java/eu/siacs/conversations/Config.java2
-rw-r--r--src/main/java/eu/siacs/conversations/parser/MessageParser.java16
2 files changed, 17 insertions, 1 deletions
diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java
index 6bc7a0a04..f6416d9f7 100644
--- a/src/main/java/eu/siacs/conversations/Config.java
+++ b/src/main/java/eu/siacs/conversations/Config.java
@@ -110,6 +110,8 @@ public final class Config {
public static final boolean IGNORE_ID_REWRITE_IN_MUC = true;
+ public static final boolean PARSE_REAL_JID_FROM_MUC_MAM = false; //dangerous if server doesn’t filter
+
public static final long MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;
public static final long MAM_MAX_CATCHUP = MILLISECONDS_IN_DAY / 2;
public static final int MAM_MAX_MESSAGES = 500;
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);