From: AsamK Date: Mon, 16 Oct 2023 15:34:28 +0000 (+0200) Subject: Use partial cdsi request only for a maximum of 3 numbers X-Git-Tag: v0.12.3~9 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/505de39d2acabed2bffd396ab44219e3957c051d Use partial cdsi request only for a maximum of 3 numbers Fixes #1239 --- diff --git a/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java b/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java index 7b2ba140..bf45f8cd 100644 --- a/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java +++ b/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java @@ -29,6 +29,7 @@ public class ServiceConfig { public final static long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE = 10 * 1024 * 1024; public final static boolean AUTOMATIC_NETWORK_RETRY = true; public final static int GROUP_MAX_SIZE = 1001; + public final static int MAXIMUM_ONE_OFF_REQUEST_SIZE = 3; private final static KeyStore iasKeyStore; diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java index 322bd032..133aab5b 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java @@ -26,6 +26,8 @@ import java.util.Map; import java.util.Optional; import java.util.Set; +import static org.asamk.signal.manager.config.ServiceConfig.MAXIMUM_ONE_OFF_REQUEST_SIZE; + public class RecipientHelper { private final static Logger logger = LoggerFactory.getLogger(RecipientHelper.class); @@ -134,7 +136,14 @@ public class RecipientHelper { public Map getRegisteredUsers( final Set numbers ) throws IOException { - return getRegisteredUsers(numbers, true); + if (numbers.size() > MAXIMUM_ONE_OFF_REQUEST_SIZE) { + final var allNumbers = new HashSet<>(account.getRecipientStore().getAllNumbers()) {{ + addAll(numbers); + }}; + return getRegisteredUsers(allNumbers, false); + } else { + return getRegisteredUsers(numbers, true); + } } private Map getRegisteredUsers( @@ -174,7 +183,10 @@ public class RecipientHelper { logger.debug("No new numbers to query."); return Map.of(); } - logger.trace("Querying CDSI for {} new numbers ({} previous)", newNumbers.size(), previousNumbers.size()); + logger.trace("Querying CDSI for {} new numbers ({} previous), isPartialRefresh={}", + newNumbers.size(), + previousNumbers.size(), + isPartialRefresh); final var token = previousNumbers.isEmpty() ? Optional.empty() : Optional.ofNullable(account.getCdsiToken());