diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 5ba2dbe72a1ed078cf96588c3c4fb2dce30a5375..8cf9a59bcdf0dd4d6704f22dd85386db293fdf3d 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -223,10 +223,10 @@ public class XmppConnection implements Runnable { } } - private static boolean validBase64(String input) { + private static boolean validBase64(final String input) { try { return Base64.decode(input, Base64.URL_SAFE).length == 3; - } catch (Throwable throwable) { + } catch (final Throwable throwable) { return false; } } @@ -1127,7 +1127,15 @@ public class XmppConnection implements Runnable { } sendPacket(packet); } - changeStatusToOnline(); + if (mWaitForDisco.get()) { + this.lastDiscoStarted = SystemClock.elapsedRealtime(); + Log.d( + Config.LOGTAG, + account.getJid().asBareJid() + ": awaiting disco results after resume"); + changeStatus(Account.State.CONNECTING); + } else { + changeStatusToOnline(); + } } private void changeStatusToOnline() { @@ -2101,7 +2109,7 @@ public class XmppConnection implements Runnable { Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": starting service discovery"); mPendingServiceDiscoveries.set(0); mWaitForDisco.set(waitForDisco); - lastDiscoStarted = SystemClock.elapsedRealtime(); + this.lastDiscoStarted = SystemClock.elapsedRealtime(); mXmppConnectionService.scheduleWakeUpCall( Config.CONNECT_DISCO_TIMEOUT, account.getUuid().hashCode()); final Element caps = streamFeatures.findChild("c");