From: AsamK Date: Fri, 3 Sep 2021 19:30:45 +0000 (+0200) Subject: Add missing isActive check X-Git-Tag: v0.9.0~24 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/43bcc95713f14bdf6103d63d2daed66c3e7df502?ds=sidebyside Add missing isActive check --- diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java b/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java index 5738408d..1b94642a 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java @@ -109,11 +109,7 @@ public class SessionStore implements SignalServiceSessionStore { synchronized (cachedSessions) { final var session = loadSessionLocked(key); - if (session == null) { - return false; - } - - return session.hasSenderChain() && session.getSessionVersion() == CiphertextMessage.CURRENT_VERSION; + return isActive(session); } } @@ -158,6 +154,7 @@ public class SessionStore implements SignalServiceSessionStore { return recipientIdToNameMap.keySet() .stream() .flatMap(recipientId -> getKeysLocked(recipientId).stream()) + .filter(key -> isActive(this.loadSessionLocked(key))) .map(key -> new SignalProtocolAddress(recipientIdToNameMap.get(key.recipientId), key.getDeviceId())) .collect(Collectors.toSet()); } @@ -321,6 +318,12 @@ public class SessionStore implements SignalServiceSessionStore { } } + private static boolean isActive(SessionRecord record) { + return record != null + && record.hasSenderChain() + && record.getSessionVersion() == CiphertextMessage.CURRENT_VERSION; + } + private static final class Key { private final RecipientId recipientId;