From 1cd6b58ece9743687abfb5c3280aea108f4f2466 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 28 May 2020 08:58:40 -0400 Subject: [PATCH] Don't enqueue duplicate PushDecryptMessageJobs. --- .../securesms/database/PushDatabase.java | 2 +- .../messages/IncomingMessageProcessor.java | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java index f87fe7d0f9..e347dc2e66 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java @@ -50,7 +50,7 @@ public class PushDatabase extends Database { Optional messageId = find(envelope); if (messageId.isPresent()) { - return messageId.get(); + return -1; } else { ContentValues values = new ContentValues(); values.put(TYPE, envelope.getType()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageProcessor.java index 9f6af2313e..428b51d8d7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageProcessor.java @@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobs.PushDecryptMessageJob; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.recipients.Recipient; +import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope; import java.io.Closeable; @@ -90,15 +91,21 @@ public class IncomingMessageProcessor { } } - private @NonNull String processMessage(@NonNull SignalServiceEnvelope envelope) { + private @Nullable String processMessage(@NonNull SignalServiceEnvelope envelope) { Log.i(TAG, "Received message. Inserting in PushDatabase."); - long id = pushDatabase.insert(envelope); - PushDecryptMessageJob job = new PushDecryptMessageJob(context, id); + long id = pushDatabase.insert(envelope); - jobManager.add(job); + if (id > 0) { + PushDecryptMessageJob job = new PushDecryptMessageJob(context, id); - return job.getId(); + jobManager.add(job); + + return job.getId(); + } else { + Log.w(TAG, "The envelope was already present in the PushDatabase."); + return null; + } } private void processReceipt(@NonNull SignalServiceEnvelope envelope) {