diff --git a/app/src/main/java/org/thoughtcrime/securesms/net/SignalWebSocketHealthMonitor.kt b/app/src/main/java/org/thoughtcrime/securesms/net/SignalWebSocketHealthMonitor.kt index 6c7bdc84f9..df401c798f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/net/SignalWebSocketHealthMonitor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/net/SignalWebSocketHealthMonitor.kt @@ -63,7 +63,7 @@ class SignalWebSocketHealthMonitor( .distinctUntilChanged() .subscribeBy { onStateChanged(it) } - webSocket.keepAliveChangedListener = this::updateKeepAliveSenderStatus + webSocket.keepAliveChangedListener = { executor.execute(this::updateKeepAliveSenderStatus) } } } @@ -100,10 +100,9 @@ class SignalWebSocketHealthMonitor( private fun updateKeepAliveSenderStatus() { if (keepAliveSender == null && sendKeepAlives()) { - keepAliveSender = KeepAliveSender() - keepAliveSender!!.start() + keepAliveSender = KeepAliveSender().also { it.start() } } else if (keepAliveSender != null && !sendKeepAlives()) { - keepAliveSender!!.shutdown() + keepAliveSender?.shutdown() keepAliveSender = null } } diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/websocket/SignalWebSocket.kt b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/websocket/SignalWebSocket.kt index 05aaf78484..052364d763 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/websocket/SignalWebSocket.kt +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/websocket/SignalWebSocket.kt @@ -238,8 +238,10 @@ sealed class SignalWebSocket( lastInteractionTime = now } val sleepDuration = (lastInteractionTime + disconnectTimeout) - now - Log.v(TAG, "$connectionName Disconnect scheduled in $sleepDuration") - sleepTimer.sleep(sleepDuration.inWholeMilliseconds) + if (sleepDuration.isPositive()) { + Log.v(TAG, "$connectionName Disconnect scheduled in $sleepDuration") + sleepTimer.sleep(sleepDuration.inWholeMilliseconds) + } } } catch (_: InterruptedException) { }