aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-08-30 20:47:14 +0200
committerChristian Schneppe <christian@pix-art.de>2018-08-30 20:47:14 +0200
commit8b4e383d0f85586d57fa96bc8a6802c1ff2e455e (patch)
treec3bf3d8ead09a099880987c4446775e52ede3ce6 /src/main/java/de
parent73b65ef7e161e670da6c6e960917317ee96fcf77 (diff)
special treatment for presence errors known to be mucs
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/pixart/messenger/parser/PresenceParser.java2
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java5
2 files changed, 7 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/parser/PresenceParser.java b/src/main/java/de/pixart/messenger/parser/PresenceParser.java
index 6602e8aef..4a627837a 100644
--- a/src/main/java/de/pixart/messenger/parser/PresenceParser.java
+++ b/src/main/java/de/pixart/messenger/parser/PresenceParser.java
@@ -349,6 +349,8 @@ public class PresenceParser extends AbstractParser implements
this.parseConferencePresence(packet, account);
} else if (packet.hasChild("x", "http://jabber.org/protocol/muc")) {
this.parseConferencePresence(packet, account);
+ } else if ("error".equals(packet.getAttribute("type")) && mXmppConnectionService.isMuc(account, packet.getFrom())) {
+ this.parseConferencePresence(packet, account);
} else {
this.parseContactPresence(packet, account);
}
diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
index f4e0bf877..896061457 100644
--- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
+++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
@@ -568,6 +568,11 @@ public class XmppConnectionService extends Service {
return find(getConversations(), account, jid);
}
+ public boolean isMuc(final Account account, final Jid jid) {
+ final Conversation c = find(account, jid);
+ return c != null && c.getMode() == Conversational.MODE_MULTI;
+ }
+
public void search(List<String> term, OnSearchResultsAvailable onSearchResultsAvailable) {
MessageSearchTask.search(this, term, onSearchResultsAvailable);
}