diff options
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/pixart/messenger/xmpp/Patches.java | 16 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/xmpp/XmppConnection.java | 9 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/xmpp/Patches.java b/src/main/java/de/pixart/messenger/xmpp/Patches.java new file mode 100644 index 000000000..85b32e3d5 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/Patches.java @@ -0,0 +1,16 @@ +package de.pixart.messenger.xmpp; + +import java.util.Arrays; +import java.util.List; + +public class Patches { + public static final List<String> DISCO_EXCEPTIONS = Arrays.asList( + "nimbuzz.com" + ); + public static final List<XmppConnection.Identity> SUFFICIENT_PUSH = Arrays.asList( + XmppConnection.Identity.EJABBERD + ); + public static final List<XmppConnection.Identity> BAD_MUC_REFLECTION = Arrays.asList( + XmppConnection.Identity.SLACK + ); +}
\ No newline at end of file diff --git a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java index 4a93d1eb6..aba117b77 100644 --- a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java +++ b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java @@ -1118,10 +1118,15 @@ public class XmppConnection implements Runnable { synchronized (this.disco) { this.disco.clear(); } + Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": starting service discovery"); mPendingServiceDiscoveries.set(0); - mWaitForDisco.set(smVersion != 0 && !account.getJid().getDomainpart().equalsIgnoreCase("nimbuzz.com")); + if (smVersion == 0 || Patches.DISCO_EXCEPTIONS.contains(account.getJid().getDomainpart())) { + Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": do not wait for service discovery"); + mWaitForDisco.set(false); + } else { + mWaitForDisco.set(true); + } lastDiscoStarted = SystemClock.elapsedRealtime(); - Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": starting service discovery"); mXmppConnectionService.scheduleWakeUpCall(Config.CONNECT_DISCO_TIMEOUT, account.getUuid().hashCode()); Element caps = streamFeatures.findChild("c"); final String hash = caps == null ? null : caps.getAttribute("hash"); |