From 062e51bdccde6f72d9c7cacc8408ec3b2827fa8d Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 21 Jan 2018 21:20:59 +0100 Subject: permanently cache last resolver result --- src/main/java/de/pixart/messenger/xmpp/XmppConnection.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/main/java/de/pixart/messenger/xmpp/XmppConnection.java') diff --git a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java index 58329609a..c6b913677 100644 --- a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java +++ b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java @@ -380,7 +380,18 @@ public class XmppConnection implements Runnable { throw new IOException(e.getMessage()); } } else { + final String domain = account.getJid().getDomainpart(); List results = Resolver.resolve(account.getJid().getDomainpart()); + Resolver.Result storedBackupResult; + if (!Thread.currentThread().isInterrupted()) { + storedBackupResult = mXmppConnectionService.databaseBackend.findResolverResult(domain); + if (storedBackupResult != null && !results.contains(storedBackupResult)) { + results.add(storedBackupResult); + Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": loaded backup resolver result from db: " + storedBackupResult); + } + } else { + storedBackupResult = null; + } for (Iterator iterator = results.iterator(); iterator.hasNext(); ) { final Resolver.Result result = iterator.next(); if (Thread.currentThread().isInterrupted()) { @@ -430,6 +441,9 @@ public class XmppConnection implements Runnable { } if (startXmpp(localSocket)) { + if (!result.equals(storedBackupResult)) { + mXmppConnectionService.databaseBackend.saveResolverResult(domain, result); + } break; // successfully connected to server that speaks xmpp } else { localSocket.close(); -- cgit v1.2.3