From ce9d44d01086840e25a727705c62ab9cc61a404f Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 26 Feb 2021 15:08:56 -0500 Subject: [PATCH] Move back to async message processing. --- .../securesms/jobs/PushDecryptMessageJob.java | 19 ++++++++----------- .../messages/IncomingMessageProcessor.java | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java index 71a5cba93e2..d39bd90bf49 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptMessageJob.java @@ -116,20 +116,17 @@ public void onRun() throws RetryLaterException { throw new RetryLaterException(); } - List jobs = new LinkedList<>(); + List jobs = new LinkedList<>(); + DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope); - try (DatabaseSessionLock.Lock unused = DatabaseSessionLock.INSTANCE.acquire()) { - DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope); - - if (result.getContent() != null) { - jobs.add(new PushProcessMessageJob(result.getContent(), smsMessageId, envelope.getTimestamp())); - } else if (result.getException() != null && result.getState() != MessageState.NOOP) { - jobs.add(new PushProcessMessageJob(result.getState(), result.getException(), smsMessageId, envelope.getTimestamp())); - } - - jobs.addAll(result.getJobs()); + if (result.getContent() != null) { + jobs.add(new PushProcessMessageJob(result.getContent(), smsMessageId, envelope.getTimestamp())); + } else if (result.getException() != null && result.getState() != MessageState.NOOP) { + jobs.add(new PushProcessMessageJob(result.getState(), result.getException(), smsMessageId, envelope.getTimestamp())); } + jobs.addAll(result.getJobs()); + for (Job job: jobs) { ApplicationDependencies.getJobManager().add(job); } 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 a25ac0e4315..069dfdefd7b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageProcessor.java @@ -25,12 +25,12 @@ import org.thoughtcrime.securesms.messages.MessageDecryptionUtil.DecryptionResult; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; +import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.GroupUtil; import org.thoughtcrime.securesms.util.SetUtil; import org.thoughtcrime.securesms.util.Stopwatch; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.SignalSessionLock; -import org.whispersystems.signalservice.api.messages.SignalServiceContent; import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope; import org.whispersystems.signalservice.api.messages.SignalServiceGroupContext; @@ -100,6 +100,20 @@ private Processor(@NonNull Context context) { } private @Nullable String processMessage(@NonNull SignalServiceEnvelope envelope) { + if (FeatureFlags.internalUser()) { + return processMessageInline(envelope); + } else { + return processMessageDeferred(envelope); + } + } + + private @Nullable String processMessageDeferred(@NonNull SignalServiceEnvelope envelope) { + Job job = new PushDecryptMessageJob(context, envelope); + jobManager.add(job); + return job.getId(); + } + + private @Nullable String processMessageInline(@NonNull SignalServiceEnvelope envelope) { Log.i(TAG, "Received message " + envelope.getTimestamp() + "."); Stopwatch stopwatch = new Stopwatch("message"); @@ -122,6 +136,7 @@ private Processor(@NonNull Context context) { Log.i(TAG, "Acquired lock while processing message " + envelope.getTimestamp() + "."); DecryptionResult result = MessageDecryptionUtil.decrypt(context, envelope); + Log.d(TAG, "Decryption finished for " + envelope.getTimestamp()); stopwatch.split("decrypt"); for (Job job : result.getJobs()) {