Merge pull request #1087 from 0x330a/fix/expire-old-call-messages

Prevent very old messages (15 minutes ago) being processed to prevent endless crashes in some cases
This commit is contained in:
Morgan Pretty 2023-01-24 13:59:19 +11:00 committed by GitHub
commit bdac7f2ea3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import org.session.libsession.database.StorageProtocol
import org.session.libsession.messaging.calls.CallMessageType
import org.session.libsession.messaging.messages.control.CallMessage
import org.session.libsession.messaging.utilities.WebRtcUtils
import org.session.libsession.snode.SnodeAPI
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsession.utilities.recipients.Recipient
@ -29,6 +30,10 @@ import org.webrtc.IceCandidate
class CallMessageProcessor(private val context: Context, private val textSecurePreferences: TextSecurePreferences, lifecycle: Lifecycle, private val storage: StorageProtocol) {
companion object {
private const val VERY_EXPIRED_TIME = 15 * 60 * 1000L
}
init {
lifecycle.coroutineScope.launch(IO) {
while (isActive) {
@ -53,6 +58,13 @@ class CallMessageProcessor(private val context: Context, private val textSecureP
}
continue
}
val isVeryExpired = (nextMessage.sentTimestamp?:0) + VERY_EXPIRED_TIME < SnodeAPI.nowWithOffset
if (isVeryExpired) {
Log.e("Loki", "Dropping very expired call message")
continue
}
when (nextMessage.type) {
OFFER -> incomingCall(nextMessage)
ANSWER -> incomingAnswer(nextMessage)

View File

@ -56,6 +56,10 @@ object SnodeAPI {
* user's clock is incorrect.
*/
internal var clockOffset = 0L
val nowWithOffset
get() = System.currentTimeMillis() + clockOffset
internal var forkInfo by observable(database.getForkInfo()) { _, oldValue, newValue ->
if (newValue > oldValue) {
Log.d("Loki", "Setting new fork info new: $newValue, old: $oldValue")