aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/parser
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2016-11-07 21:37:13 +0100
committerChristian Schneppe <christian@pix-art.de>2016-11-07 21:37:13 +0100
commite935c7e8f5d2e8afa235af102d02211173ba0039 (patch)
tree507a0a9dff4ec1264538428d5ea7e2f26a989193 /src/main/java/de/pixart/messenger/parser
parent2362579eee68c24a9a91ff01b01ce96873a6fb14 (diff)
extracting stanza-id where by=account
Diffstat (limited to 'src/main/java/de/pixart/messenger/parser')
-rw-r--r--src/main/java/de/pixart/messenger/parser/MessageParser.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/parser/MessageParser.java b/src/main/java/de/pixart/messenger/parser/MessageParser.java
index d03638f85..adc5fcdff 100644
--- a/src/main/java/de/pixart/messenger/parser/MessageParser.java
+++ b/src/main/java/de/pixart/messenger/parser/MessageParser.java
@@ -31,6 +31,7 @@ import de.pixart.messenger.http.HttpConnectionManager;
import de.pixart.messenger.services.MessageArchiveService;
import de.pixart.messenger.services.XmppConnectionService;
import de.pixart.messenger.utils.CryptoHelper;
+import de.pixart.messenger.utils.Xmlns;
import de.pixart.messenger.xml.Element;
import de.pixart.messenger.xmpp.OnMessagePacketReceived;
import de.pixart.messenger.xmpp.chatstate.ChatState;
@@ -208,7 +209,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
private static String extractStanzaId(Element packet, Jid by) {
for(Element child : packet.getChildren()) {
if (child.getName().equals("stanza-id")
- && "urn:xmpp:sid:0".equals(child.getNamespace())
+ && Xmlns.STANZA_IDS.equals(child.getNamespace())
&& by.equals(child.getAttributeAsJid("by"))) {
return child.getAttribute("id");
}
@@ -430,7 +431,18 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
}
if (serverMsgId == null) {
- serverMsgId = extractStanzaId(packet, isTypeGroupChat ? conversation.getJid().toBareJid() : account.getServer());
+ final Jid by;
+ final boolean safeToExtract;
+ if (isTypeGroupChat) {
+ by = conversation.getJid().toBareJid();
+ safeToExtract = true; //conversation.getMucOptions().hasFeature(Xmlns.STANZA_IDS);
+ } else {
+ by = account.getJid().toBareJid();
+ safeToExtract = true; //account.getXmppConnection().getFeatures().stanzaIds();
+ }
+ if (safeToExtract) {
+ serverMsgId = extractStanzaId(packet, by);
+ }
}
message.setCounterpart(counterpart);