From 8365310bb56a54404a48fe908c468219e57c3a90 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 edb56342bb..19f0147a0c 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 02510671f0..1b87a805ca 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 @@ -2068,11 +2068,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;