From 6bde55f73b0f5125077f363a4024855458b6c409 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 31 Aug 2021 09:46:37 -0400 Subject: [PATCH] Only check remote registrationIds for active records. --- .../storage/TextSecureSessionStore.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java index 9be4da0f3..710d32e53 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java @@ -104,19 +104,22 @@ public class TextSecureSessionStore implements SignalServiceSessionStore { @Override public Set getAllAddressesWithActiveSessions(List addressNames) throws InvalidRegistrationIdException { synchronized (LOCK) { - List rows = DatabaseFactory.getSessionDatabase(context).getAllFor(addressNames); + List activeRows = DatabaseFactory.getSessionDatabase(context) + .getAllFor(addressNames) + .stream() + .filter(row -> isActive(row.getRecord())) + .collect(Collectors.toList()); - boolean hasInvalidRegistrationId = rows.stream() - .map(SessionDatabase.SessionRow::getRecord) - .anyMatch(record -> !isValidRegistrationId(record.getRemoteRegistrationId())); + boolean hasInvalidRegistrationId = activeRows.stream() + .map(SessionDatabase.SessionRow::getRecord) + .anyMatch(record -> !isValidRegistrationId(record.getRemoteRegistrationId())); if (hasInvalidRegistrationId) { throw new InvalidRegistrationIdException(); } - return rows.stream() - .filter(row -> isActive(row.getRecord())) - .map(row -> new SignalProtocolAddress(row.getAddress(), row.getDeviceId())) - .collect(Collectors.toSet()); + return activeRows.stream() + .map(row -> new SignalProtocolAddress(row.getAddress(), row.getDeviceId())) + .collect(Collectors.toSet()); } }