aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/xmpp/XmppConnection.java')
-rw-r--r--src/main/java/de/pixart/messenger/xmpp/XmppConnection.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
index be9fd5a3a..a41924e08 100644
--- a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
+++ b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
@@ -317,11 +317,17 @@ public class XmppConnection implements Runnable {
}
} else {
final String domain = account.getJid().getDomain();
- final Resolver.Result result;
+ final Resolver.Result storedBackupResult = mXmppConnectionService.databaseBackend.findResolverResult(domain);
+ Resolver.Result result = null;
final boolean hardcoded = extended && !account.getHostname().isEmpty();
if (hardcoded) {
result = Resolver.fromHardCoded(account.getHostname(), account.getPort());
- } else {
+ } else if (storedBackupResult != null && !storedBackupResult.isOutdated()) {
+ storedBackupResult.connect();
+ result = storedBackupResult;
+ Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": loaded backup resolver result from db: " + storedBackupResult);
+ }
+ if (result == null || result.getSocket() == null) {
result = Resolver.resolve(domain);
}
if (result == null) {
@@ -348,6 +354,9 @@ public class XmppConnection implements Runnable {
localSocket.setSoTimeout(Config.SOCKET_TIMEOUT * 1000);
if (startXmpp(localSocket)) {
localSocket.setSoTimeout(0); //reset to 0; once the connection is established we don’t want this
+ if (!hardcoded && !result.equals(storedBackupResult)) {
+ mXmppConnectionService.databaseBackend.saveResolverResult(domain, result);
+ }
// successfully connected to server that speaks xmpp
} else {
FileBackend.close(localSocket);