From e690c54f7c1465fc6268445f4cafe7751f853648 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 29 Oct 2025 11:35:24 -0400 Subject: [PATCH] Fail gracefully when crash occurs during backup restore. --- .../securesms/backup/v2/BackupRepository.kt | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt index 473812b58d..2b1314eae6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt @@ -1129,20 +1129,25 @@ object BackupRepository { forwardSecrecyToken: BackupForwardSecrecyToken, cancellationSignal: () -> Boolean = { false } ): ImportResult { - val frameReader = if (backupKey == null) { - PlainTextBackupReader(inputStreamFactory(), length) - } else { - EncryptedBackupReader.createForSignalBackup( - key = backupKey, - aci = selfData.aci, - forwardSecrecyToken = forwardSecrecyToken, - length = length, - dataStream = inputStreamFactory - ) - } + try { + val frameReader = if (backupKey == null) { + PlainTextBackupReader(inputStreamFactory(), length) + } else { + EncryptedBackupReader.createForSignalBackup( + key = backupKey, + aci = selfData.aci, + forwardSecrecyToken = forwardSecrecyToken, + length = length, + dataStream = inputStreamFactory + ) + } - return frameReader.use { reader -> - import(reader, selfData, cancellationSignal) + return frameReader.use { reader -> + import(reader, selfData, cancellationSignal) + } + } catch (e: IOException) { + Log.w(TAG, "Unable to restore signal backup", e) + return ImportResult.Failure } }