aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index ca80fa84d..a171de3da 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -436,11 +436,14 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
account.setXmppConnection(this.createConnection(account));
}
new Thread(account.getXmppConnection()).start();
- } else if ((account.getStatus() == Account.State.CONNECTING)
- && ((SystemClock.elapsedRealtime() - account
- .getXmppConnection().getLastConnect()) / 1000 >= Config.CONNECT_TIMEOUT)) {
- Log.d(Config.LOGTAG, account.getJid()+ ": time out during connect reconnecting");
- reconnectAccount(account, true);
+ } else if (account.getStatus() == Account.State.CONNECTING) {
+ long timeout = Config.CONNECT_TIMEOUT - ((SystemClock.elapsedRealtime() - account.getXmppConnection().getLastConnect()) / 1000);
+ if (timeout < 0) {
+ Log.d(Config.LOGTAG, account.getJid() + ": time out during connect reconnecting");
+ reconnectAccount(account, true);
+ } else {
+ scheduleWakeUpCall((int) timeout,account.getUuid().hashCode());
+ }
} else {
if (account.getXmppConnection().getTimeToNextAttempt() <= 0) {
reconnectAccount(account, true);