Add additional InvalidSessionException checking to 1:1 send flows.

This commit is contained in:
Cody Henthorne
2026-06-25 14:57:15 -04:00
committed by Michelle Tang
parent 5a9cf128a0
commit e76a584bb7
3 changed files with 34 additions and 1 deletions
@@ -18,6 +18,7 @@ import org.signal.core.models.ServiceId
import org.signal.core.util.logging.Log
import org.signal.core.util.orNull
import org.signal.libsignal.net.ChallengeOption
import org.signal.libsignal.protocol.InvalidSessionException
import org.signal.libsignal.protocol.SignalProtocolAddress
import org.signal.network.service.MessageService
import org.thoughtcrime.securesms.BuildConfig
@@ -339,6 +340,12 @@ class IndividualSendJobV2 private constructor(parameters: Parameters, private va
}
is MessageService.SendError.ApplicationError -> when (val cause = error.exception) {
// InvalidSessionException is a RuntimeException, must check before fatal runtime check
is InvalidSessionException -> {
Log.w(TAG, "${logPrefix(message.sentTimeMillis)} Session was invalidated mid-send. Retrying.", cause)
Result.retry(nextRunAttemptBackoff(runAttempt + 1))
}
is RuntimeException -> {
Log.e(TAG, "${logPrefix(message.sentTimeMillis)} Encountered a fatal application error. Crash imminent.", cause)
Result.fatalFailure(cause)