mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 09:49:30 +01:00
Attempt to prevent message retry loops.
This commit is contained in:
@@ -119,6 +119,9 @@ public final class FeatureFlags {
|
||||
private static final String GIF_SEARCH = "global.gifSearch";
|
||||
private static final String AUDIO_REMUXING = "android.media.audioRemux.1";
|
||||
private static final String VIDEO_RECORD_1X_ZOOM = "android.media.videoCaptureDefaultZoom";
|
||||
private static final String RETRY_RECEIPT_MAX_COUNT = "android.retryReceipt.maxCount";
|
||||
private static final String RETRY_RECEIPT_MAX_COUNT_RESET_AGE = "android.retryReceipt.maxCountResetAge";
|
||||
private static final String PREKEY_FORCE_REFRESH_INTERVAL = "android.prekeyForceRefreshInterval";
|
||||
|
||||
/**
|
||||
* We will only store remote values for flags in this set. If you want a flag to be controllable
|
||||
@@ -190,7 +193,10 @@ public final class FeatureFlags {
|
||||
USE_ACTIVE_CALL_MANAGER,
|
||||
GIF_SEARCH,
|
||||
AUDIO_REMUXING,
|
||||
VIDEO_RECORD_1X_ZOOM
|
||||
VIDEO_RECORD_1X_ZOOM,
|
||||
RETRY_RECEIPT_MAX_COUNT,
|
||||
RETRY_RECEIPT_MAX_COUNT_RESET_AGE,
|
||||
PREKEY_FORCE_REFRESH_INTERVAL
|
||||
);
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -259,7 +265,10 @@ public final class FeatureFlags {
|
||||
CALLING_REACTIONS,
|
||||
NOTIFICATION_THUMBNAIL_BLOCKLIST,
|
||||
CALLING_RAISE_HAND,
|
||||
VIDEO_RECORD_1X_ZOOM
|
||||
VIDEO_RECORD_1X_ZOOM,
|
||||
RETRY_RECEIPT_MAX_COUNT,
|
||||
RETRY_RECEIPT_MAX_COUNT_RESET_AGE,
|
||||
PREKEY_FORCE_REFRESH_INTERVAL
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -435,6 +444,20 @@ public final class FeatureFlags {
|
||||
return getLong(RETRY_RESPOND_MAX_AGE, TimeUnit.DAYS.toMillis(14));
|
||||
}
|
||||
|
||||
/**
|
||||
* The max number of retry receipts sends we allow (within @link{#retryReceiptMaxCountResetAge()}) before we consider the volume too large and stop responding.
|
||||
*/
|
||||
public static long retryReceiptMaxCount() {
|
||||
return getLong(RETRY_RECEIPT_MAX_COUNT, 10);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the last retry receipt send was older than this, then we reset the retry receipt sent count. (For use with @link{#retryReceiptMaxCount()})
|
||||
*/
|
||||
public static long retryReceiptMaxCountResetAge() {
|
||||
return getLong(RETRY_RECEIPT_MAX_COUNT_RESET_AGE, TimeUnit.HOURS.toMillis(3));
|
||||
}
|
||||
|
||||
/** How long a sender key can live before it needs to be rotated. */
|
||||
public static long senderKeyMaxAge() {
|
||||
return Math.min(getLong(SENDER_KEY_MAX_AGE, TimeUnit.DAYS.toMillis(14)), TimeUnit.DAYS.toMillis(90));
|
||||
@@ -670,6 +693,11 @@ public final class FeatureFlags {
|
||||
return getBoolean(VIDEO_RECORD_1X_ZOOM, false);
|
||||
}
|
||||
|
||||
/** How often we allow a forced prekey refresh. */
|
||||
public static long preKeyForceRefreshInterval() {
|
||||
return getLong(PREKEY_FORCE_REFRESH_INTERVAL, TimeUnit.HOURS.toMillis(1));
|
||||
}
|
||||
|
||||
/** Only for rendering debug info. */
|
||||
public static synchronized @NonNull Map<String, Object> getMemoryValues() {
|
||||
return new TreeMap<>(REMOTE_VALUES);
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Copyright 2024 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.thoughtcrime.securesms.util
|
||||
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||
import org.thoughtcrime.securesms.jobmanager.Job
|
||||
import org.thoughtcrime.securesms.jobmanager.JobManager
|
||||
|
||||
/** Starts a new chain with this job. */
|
||||
fun Job.asChain(): JobManager.Chain {
|
||||
return ApplicationDependencies.getJobManager().startChain(this)
|
||||
}
|
||||
Reference in New Issue
Block a user