From 2ba427e3dd71bf565d3a74f4a5cd3f2e12ffc432 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 8 Sep 2025 09:26:03 -0400 Subject: [PATCH] Do not attempt archive restore when data hash is null. --- .../securesms/jobs/RestoreAttachmentJob.kt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt index b116272e7c..db593578e3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreAttachmentJob.kt @@ -328,13 +328,14 @@ class RestoreAttachmentJob private constructor( throw MmsException("[$attachmentId] Attachment too large, failing download") } - useArchiveCdn = if (SignalStore.backup.backsUpMedia && !forceTransitTier) { - if (attachment.archiveTransferState != AttachmentTable.ArchiveTransferState.FINISHED) { - throw InvalidAttachmentException("[$attachmentId] Invalid attachment configuration! backsUpMedia: ${SignalStore.backup.backsUpMedia}, forceTransitTier: $forceTransitTier, archiveTransferState: ${attachment.archiveTransferState}") - } - true - } else { - false + useArchiveCdn = !forceTransitTier && SignalStore.backup.backsUpMedia && attachment.dataHash != null + + if (!forceTransitTier && SignalStore.backup.backsUpMedia && attachment.dataHash == null) { + Log.w(TAG, "[$attachmentId] No plaintextHash, implying the attachment was never downloaded before being backed up. Forced to attempt download from the transit CDN.") + } + + if (useArchiveCdn && attachment.archiveTransferState != AttachmentTable.ArchiveTransferState.FINISHED) { + throw InvalidAttachmentException("[$attachmentId] Invalid attachment configuration! backsUpMedia: ${SignalStore.backup.backsUpMedia}, forceTransitTier: $forceTransitTier, archiveTransferState: ${attachment.archiveTransferState}") } val messageReceiver = AppDependencies.signalServiceMessageReceiver