build.gradle 🔗
@@ -45,7 +45,7 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
- versionCode 69
+ versionCode 70
versionName "1.5.0-alpha"
}
Daniel Gultsch created
build.gradle | 2
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 15
src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 2
3 files changed, 13 insertions(+), 6 deletions(-)
@@ -45,7 +45,7 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
- versionCode 69
+ versionCode 70
versionName "1.5.0-alpha"
}
@@ -483,9 +483,16 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
long lastSent = account.getXmppConnection().getLastPingSent();
long pingInterval = "ui".equals(action) ? Config.PING_MIN_INTERVAL * 1000 : Config.PING_MAX_INTERVAL * 1000;
long msToNextPing = (Math.max(lastReceived,lastSent) + pingInterval) - SystemClock.elapsedRealtime();
- if (lastSent > lastReceived && (lastSent + Config.PING_TIMEOUT * 1000) < SystemClock.elapsedRealtime()) {
- Log.d(Config.LOGTAG, account.getJid().toBareJid()+ ": ping timeout");
- this.reconnectAccount(account, true);
+ long pingTimeoutIn = (lastSent + Config.PING_TIMEOUT * 1000) - SystemClock.elapsedRealtime();
+ if (lastSent > lastReceived) {
+ if (pingTimeoutIn < 0) {
+ long age = (SystemClock.elapsedRealtime() - account.getXmppConnection().getLastConnect()) / 1000;
+ Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": ping timeout. connection age was: "+age+"s");
+ this.reconnectAccount(account, true);
+ } else {
+ int secs = (int) (pingTimeoutIn / 1000);
+ this.scheduleWakeUpCall(secs,account.getUuid().hashCode());
+ }
} else if (msToNextPing <= 0) {
account.getXmppConnection().sendPing();
Log.d(Config.LOGTAG, account.getJid().toBareJid()+" send ping");
@@ -614,7 +621,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
}
protected void scheduleWakeUpCall(int seconds, int requestCode) {
- final long timeToWake = SystemClock.elapsedRealtime() + (seconds + 1) * 1000;
+ final long timeToWake = SystemClock.elapsedRealtime() + (seconds < 0 ? 1 : seconds + 1) * 1000;
Context context = getApplicationContext();
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
@@ -921,7 +921,7 @@ public class XmppConnection implements Runnable {
++stanzasSent;
}
tagWriter.writeStanzaAsync(packet);
- if (packet instanceof MessagePacket && packet.getId() != null && this.streamId != null) {
+ if (packet instanceof MessagePacket && packet.getId() != null && getFeatures().sm()) {
if (Config.EXTENDED_SM_LOGGING) {
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": requesting ack for message stanza #" + stanzasSent);
}