Prevent FK violation from bad decryption insert.

Fixes #12880
This commit is contained in:
Greyson Parrelli
2023-04-10 13:33:28 -04:00
parent ca0dd03042
commit c5af204de3
3 changed files with 21 additions and 2 deletions

View File

@@ -55,8 +55,13 @@ public final class PendingRetryReceiptManager extends TimedEventManager<PendingR
@WorkerThread
@Override
protected void executeEvent(@NonNull PendingRetryReceiptModel event) {
Log.w(TAG, "It's been " + (System.currentTimeMillis() - event.getReceivedTimestamp()) + " ms since this retry receipt was received. Showing an error.");
messageDatabase.insertBadDecryptMessage(event.getAuthor(), event.getAuthorDevice(), event.getSentTimestamp(), event.getReceivedTimestamp(), event.getThreadId());
if (SignalDatabase.threads().containsId(event.getThreadId()) && SignalDatabase.recipients().containsId(event.getAuthor())) {
Log.w(TAG, "It's been " + (System.currentTimeMillis() - event.getReceivedTimestamp()) + " ms since this retry receipt was received. Showing an error.");
messageDatabase.insertBadDecryptMessage(event.getAuthor(), event.getAuthorDevice(), event.getSentTimestamp(), event.getReceivedTimestamp(), event.getThreadId());
} else {
Log.w(TAG, "Would normally show an error, but the thread or recipient has since been deleted! ThreadId: " + event.getThreadId() + ", RecipientId: " + event.getAuthor());
}
pendingCache.delete(event);
}