From 0542262c4925c764791c1df25fab39a2b20ddd11 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 4 May 2026 13:37:25 -0400 Subject: [PATCH] Improve error handling resiliance. --- .../org/thoughtcrime/securesms/jobs/SendRetryReceiptJob.java | 3 ++- .../org/thoughtcrime/securesms/messages/MessageDecryptor.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendRetryReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendRetryReceiptJob.java index 3dfb6c2d2f..d36bdb4011 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendRetryReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendRetryReceiptJob.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException; +import org.whispersystems.signalservice.api.push.exceptions.RateLimitException; import java.util.Optional; import java.util.concurrent.TimeUnit; @@ -97,7 +98,7 @@ public final class SendRetryReceiptJob extends BaseJob { @Override protected boolean onShouldRetry(@NonNull Exception e) { - return e instanceof PushNetworkException; + return e instanceof PushNetworkException || e instanceof RateLimitException; } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt index 56bdfef079..aa98f4fb3a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageDecryptor.kt @@ -341,7 +341,7 @@ object MessageDecryptor { if (contentHint == ContentHint.IMPLICIT) { Log.w(TAG, "${logPrefix(envelope, senderServiceId)} The content hint is $contentHint, so no error message is needed.", true) - Result.Ignore(envelope, serverDeliveredTimestamp, followUpOperations) + return Result.Ignore(envelope, serverDeliveredTimestamp, followUpOperations) } else { Log.w(TAG, "${logPrefix(envelope, senderServiceId)} The content hint is $contentHint, so we need to insert an error right away.", true) return Result.DecryptionError(envelope, serverDeliveredTimestamp, protocolException.toErrorMetadata(), followUpOperations.toUnmodifiableList())