aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/parser/PresenceParser.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2017-04-16 12:14:19 +0200
committerChristian Schneppe <christian@pix-art.de>2017-04-16 12:14:19 +0200
commit45e4c115d66804d53275d9885fc2b5e64114d134 (patch)
tree733c84f4fe29f6688817ab789ceef117840928d8 /src/main/java/de/pixart/messenger/parser/PresenceParser.java
parent7722e6f03c3250c46a6ff4960705b143ee1bd621 (diff)
recognize muc self presence on nimbuzz.com
Apparently nimbuzz.com doesn't include status code 110 in muc self presence It does however include the full real jid in the presence’s item. We can use that as a work around to detect a self presence.
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/parser/PresenceParser.java7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/main/java/de/pixart/messenger/parser/PresenceParser.java b/src/main/java/de/pixart/messenger/parser/PresenceParser.java
index f87353ac7..cabac0d0a 100644
--- a/src/main/java/de/pixart/messenger/parser/PresenceParser.java
+++ b/src/main/java/de/pixart/messenger/parser/PresenceParser.java
@@ -53,6 +53,7 @@ public class PresenceParser extends AbstractParser implements
private void processConferencePresence(PresencePacket packet, Conversation conversation) {
MucOptions mucOptions = conversation.getMucOptions();
+ final Jid jid = conversation.getAccount().getJid();
final Jid from = packet.getFrom();
if (!from.isBareJid()) {
final String type = packet.getAttribute("type");
@@ -65,7 +66,7 @@ public class PresenceParser extends AbstractParser implements
if (item != null && !from.isBareJid()) {
mucOptions.setError(MucOptions.Error.NONE);
MucOptions.User user = parseItem(conversation, item, from);
- if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE)) {
+ if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE) || (codes.isEmpty() && jid.equals(item.getAttributeAsJid("jid")))) {
mucOptions.setOnline();
mucOptions.setSelf(user);
if (mucOptions.onRenameListener != null) {
@@ -107,10 +108,8 @@ public class PresenceParser extends AbstractParser implements
}
}
} else if (type.equals("unavailable")) {
- if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE) ||
- packet.getFrom().equals(mucOptions.getConversation().getJid())) {
+ if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE)) {
if (codes.contains(MucOptions.STATUS_CODE_KICKED)) {
- } else if (codes.contains(MucOptions.STATUS_CODE_KICKED)) {
mucOptions.setError(MucOptions.Error.KICKED);
} else if (codes.contains(MucOptions.STATUS_CODE_BANNED)) {
mucOptions.setError(MucOptions.Error.BANNED);