aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2017-04-05 20:36:55 +0200
committerChristian Schneppe <christian@pix-art.de>2017-04-05 22:21:41 +0200
commitea3be7ee21abb80c9717d9be84fd1c4d3204651a (patch)
treec06402cd6d0469eb2cbb9d1e660d218dcb3a8241
parent04a060761699fc82440dcc79b716c2071973877c (diff)
parse message that only contain oob tag
-rw-r--r--src/main/java/de/pixart/messenger/generator/AbstractGenerator.java1
-rw-r--r--src/main/java/de/pixart/messenger/generator/MessageGenerator.java2
-rw-r--r--src/main/java/de/pixart/messenger/parser/MessageParser.java11
-rw-r--r--src/main/java/de/pixart/messenger/utils/Namespace.java1
4 files changed, 10 insertions, 5 deletions
diff --git a/src/main/java/de/pixart/messenger/generator/AbstractGenerator.java b/src/main/java/de/pixart/messenger/generator/AbstractGenerator.java
index 5800db73e..d3ea5fa9e 100644
--- a/src/main/java/de/pixart/messenger/generator/AbstractGenerator.java
+++ b/src/main/java/de/pixart/messenger/generator/AbstractGenerator.java
@@ -29,6 +29,7 @@ public abstract class AbstractGenerator {
"urn:xmpp:jingle:transports:ibb:1",
"http://jabber.org/protocol/muc",
"jabber:x:conference",
+ Namespace.OOB,
"http://jabber.org/protocol/caps",
"http://jabber.org/protocol/disco#info",
"urn:xmpp:avatar:metadata+notify",
diff --git a/src/main/java/de/pixart/messenger/generator/MessageGenerator.java b/src/main/java/de/pixart/messenger/generator/MessageGenerator.java
index b46d58574..2155dc3c7 100644
--- a/src/main/java/de/pixart/messenger/generator/MessageGenerator.java
+++ b/src/main/java/de/pixart/messenger/generator/MessageGenerator.java
@@ -126,7 +126,7 @@ public class MessageGenerator extends AbstractGenerator {
if (message.hasFileOnRemoteHost()) {
Message.FileParams fileParams = message.getFileParams();
content = fileParams.url.toString();
- packet.addChild("x", "jabber:x:oob").addChild("url").setContent(content);
+ packet.addChild("x", Namespace.OOB).addChild("url").setContent(content);
} else {
content = message.getBody();
}
diff --git a/src/main/java/de/pixart/messenger/parser/MessageParser.java b/src/main/java/de/pixart/messenger/parser/MessageParser.java
index 90bff0e1a..b621ef79b 100644
--- a/src/main/java/de/pixart/messenger/parser/MessageParser.java
+++ b/src/main/java/de/pixart/messenger/parser/MessageParser.java
@@ -371,8 +371,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
final Element mucUserElement = packet.findChild("x", "http://jabber.org/protocol/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", "jabber:x:oob");
- final boolean isOob = oob != null && body != null && body.equals(oob.findChildContent("url"));
+ 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");
final Element axolotlEncrypted = packet.findChild(XmppAxolotlMessage.CONTAINERTAG, AxolotlService.PEP_PREFIX);
int status;
@@ -413,7 +413,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
mXmppConnectionService.updateConversationUi();
}
- if ((body != null || pgpEncrypted != null || axolotlEncrypted != null) && !isMucStatusMessage) {
+ if ((body != null || pgpEncrypted != null || axolotlEncrypted != null || oobUrl != null) && !isMucStatusMessage) {
Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, counterpart.toBareJid(), isTypeGroupChat, false, query);
final boolean conversationMultiMode = conversation.getMode() == Conversation.MODE_MULTI;
if (serverMsgId == null) {
@@ -468,6 +468,9 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
if (conversationMultiMode) {
message.setTrueCounterpart(origin);
}
+ } else if (body == null && oobUrl != null) {
+ message = new Message(conversation, oobUrl, Message.ENCRYPTION_NONE, status);
+ message.setOob(true);
} else {
message = new Message(conversation, body, Message.ENCRYPTION_NONE, status);
}
@@ -477,7 +480,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
message.setServerMsgId(serverMsgId);
message.setCarbon(isCarbon);
message.setTime(timestamp);
- message.setOob(isOob);
+ message.setOob(body != null && body.equals(oobUrl));
message.markable = packet.hasChild("markable", "urn:xmpp:chat-markers:0");
if (conversationMultiMode) {
final Jid fallback = conversation.getMucOptions().getTrueCounterpart(counterpart);
diff --git a/src/main/java/de/pixart/messenger/utils/Namespace.java b/src/main/java/de/pixart/messenger/utils/Namespace.java
index a384712db..79eb02961 100644
--- a/src/main/java/de/pixart/messenger/utils/Namespace.java
+++ b/src/main/java/de/pixart/messenger/utils/Namespace.java
@@ -10,4 +10,5 @@ public final class Namespace {
public static final String MAM = "urn:xmpp:mam:2";
public static final String MAM_LEGACY = "urn:xmpp:mam:0";
public static final String IDLE = "urn:xmpp:idle:1";
+ public static final String OOB = "jabber:x:oob";
}