special treatment for presence errors known to be mucs

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/parser/PresenceParser.java          | 2 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 5 
2 files changed, 7 insertions(+)

Detailed changes

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);
 		}

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<String> term, OnSearchResultsAvailable onSearchResultsAvailable) {
         MessageSearchTask.search(this, term, onSearchResultsAvailable);
     }