Fix web socket management related crashes.

This commit is contained in:
Cody Henthorne
2025-03-24 15:44:59 -04:00
committed by Greyson Parrelli
parent 0fb6062db3
commit 2f4669d7eb
2 changed files with 7 additions and 6 deletions

View File

@@ -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
}
}

View File

@@ -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) { }