From 411a14ce87fa5df274de13af9d6dd5cbb365f51b Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 18 Nov 2024 20:48:58 +0100 Subject: [PATCH] wait for disco response on resume --- .../siacs/conversations/xmpp/XmppConnection.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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");