diff --git a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java index 062f87b7f3d86e90698aadf60b58cdef8ea8e6c9..bd09e5d73c0b6a621aa2b82e0627e2e6a52b2f76 100644 --- a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java +++ b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java @@ -353,6 +353,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/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index e4003b87b751ea0109a5dd049acc4fcf3dd5a129..7c6a95f15ca34fc5eb59d52809dfdd6fc1c1606b 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -547,6 +547,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 term, OnSearchResultsAvailable onSearchResultsAvailable) { MessageSearchTask.search(this, term, onSearchResultsAvailable); }