From 7402959ac6cb98a0d0de14f35f628d02fdbc6ec0 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 5 Jun 2024 15:07:21 -0400 Subject: [PATCH] Fix error handling for resumable uploads to cdn3. --- .../org/thoughtcrime/securesms/jobs/AttachmentUploadJob.kt | 6 ++++++ .../signalservice/internal/push/PushServiceSocket.java | 6 ++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.kt index c014c0d064..3ed44f1dcc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentUploadJob.kt @@ -32,6 +32,7 @@ import org.whispersystems.signalservice.api.crypto.AttachmentCipherStreamUtil import org.whispersystems.signalservice.api.messages.SignalServiceAttachment import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResumableUploadResponseCodeException +import org.whispersystems.signalservice.api.push.exceptions.ResumeLocationInvalidException import org.whispersystems.signalservice.internal.crypto.PaddingInputStream import java.io.IOException import java.util.Optional @@ -167,6 +168,11 @@ class AttachmentUploadJob private constructor( uploadSpec = null } + throw e + } catch (e: ResumeLocationInvalidException) { + Log.w(TAG, "Resume location invalid. Clearing upload spec.", e) + uploadSpec = null + throw e } } diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index 30ad3d5735..06657cdd5e 100644 --- a/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -2027,11 +2027,9 @@ public class PushServiceSocket { try (Response response = call.execute()) { if (response.isSuccessful()) { - offset = Long.parseLong(response.header("Upload-Offset")); - } else if (response.code() >= 400 || response.code() < 500) { - throw new ResumeLocationInvalidException("Response: " + response); + offset = Long.parseLong(Objects.requireNonNull(response.header("Upload-Offset"))); } else { - throw new NonSuccessfulResumableUploadResponseCodeException(response.code(), "Response: " + response); + throw new ResumeLocationInvalidException("Response: " + response); } } catch (PushNetworkException | NonSuccessfulResponseCodeException e) { throw e;