diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2017-01-12 23:17:52 +0100 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2017-01-12 23:17:52 +0100 |
commit | 1876b444fa6c8912e77debcc6f8dd0fc176602d8 (patch) | |
tree | e4c6444ab1a0f929a7c85a83444aa5301c6cba97 | |
parent | c03e3b59652678721353a290449d39996faeb8fa (diff) |
refactor getServerIdentity() to parse disco result directly
-rw-r--r-- | src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 55 |
1 files changed, 21 insertions, 34 deletions
diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 7cd4707d..053e25c3 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -178,8 +178,6 @@ public class XmppConnection implements Runnable { } } - private Identity mServerIdentity = Identity.UNKNOWN; - public final OnIqPacketReceived registrationResponseListener = new OnIqPacketReceived() { @Override public void onIqPacketReceived(Account account, IqPacket packet) { @@ -253,17 +251,6 @@ public class XmppConnection implements Runnable { Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": connecting"); features.encryptionEnabled = false; this.attempt++; - switch (account.getJid().getDomainpart()) { - case "chat.facebook.com": - mServerIdentity = Identity.FACEBOOK; - break; - case "nimbuzz.com": - mServerIdentity = Identity.NIMBUZZ; - break; - default: - mServerIdentity = Identity.UNKNOWN; - break; - } try { Socket localSocket; shouldAuthenticate = needsBinding = !account.isOptionSet(Account.OPTION_REGISTER); @@ -747,7 +734,7 @@ public class XmppConnection implements Runnable { final Pair<IqPacket, OnIqPacketReceived> packetCallbackDuple = packetCallbacks.get(packet.getId()); // Packets to the server should have responses from the server if (packetCallbackDuple.first.toServer(account)) { - if (packet.fromServer(account) || mServerIdentity == Identity.FACEBOOK) { + if (packet.fromServer(account)) { callback = packetCallbackDuple.second; packetCallbacks.remove(packet.getId()); } else { @@ -1099,7 +1086,7 @@ public class XmppConnection implements Runnable { this.disco.clear(); } mPendingServiceDiscoveries.set(0); - mWaitForDisco.set(mServerIdentity != Identity.NIMBUZZ && smVersion != 0); + mWaitForDisco.set(smVersion != 0 && !account.getJid().getDomainpart().equalsIgnoreCase("nimbuzz.com")); lastDiscoStarted = SystemClock.elapsedRealtime(); Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": starting service discovery"); mXmppConnectionService.scheduleWakeUpCall(Config.CONNECT_DISCO_TIMEOUT, account.getUuid().hashCode()); @@ -1138,24 +1125,6 @@ public class XmppConnection implements Runnable { boolean advancedStreamFeaturesLoaded; synchronized (XmppConnection.this.disco) { ServiceDiscoveryResult result = new ServiceDiscoveryResult(packet); - for (final ServiceDiscoveryResult.Identity id : result.getIdentities()) { - if (mServerIdentity == Identity.UNKNOWN && id.getType().equals("im") && - id.getCategory().equals("server") && id.getName() != null && - jid.equals(account.getServer())) { - switch (id.getName()) { - case "Prosody": - mServerIdentity = Identity.PROSODY; - break; - case "ejabberd": - mServerIdentity = Identity.EJABBERD; - break; - case "Slack-XMPP": - mServerIdentity = Identity.SLACK; - break; - } - Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": server name: " + id.getName()); - } - } if (jid.equals(account.getServer())) { mXmppConnectionService.databaseBackend.insertDiscoveryResult(result); } @@ -1540,7 +1509,25 @@ public class XmppConnection implements Runnable { } public Identity getServerIdentity() { - return mServerIdentity; + synchronized (this.disco) { + ServiceDiscoveryResult result = disco.get(account.getJid().toDomainJid()); + if (result == null) { + return Identity.UNKNOWN; + } + for (final ServiceDiscoveryResult.Identity id : result.getIdentities()) { + if (id.getType().equals("im") && id.getCategory().equals("server") && id.getName() != null) { + switch (id.getName()) { + case "Prosody": + return Identity.PROSODY; + case "ejabberd": + return Identity.EJABBERD; + case "Slack-XMPP": + return Identity.SLACK; + } + } + } + } + return Identity.UNKNOWN; } private class UnauthorizedException extends IOException { |