Update sender key flag.

fork-5.53.8
Greyson Parrelli 2021-08-04 17:20:45 -04:00 zatwierdzone przez Alex Hart
rodzic 784c373a0e
commit 2b5b664a8f
5 zmienionych plików z 28 dodań i 19 usunięć

Wyświetl plik

@ -150,7 +150,7 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
/** @return The ID of the inserted entry, or -1 if none was inserted. Can be used with [addRecipientToExistingEntryIfPossible] */ /** @return The ID of the inserted entry, or -1 if none was inserted. Can be used with [addRecipientToExistingEntryIfPossible] */
fun insertIfPossible(recipientId: RecipientId, sentTimestamp: Long, sendMessageResult: SendMessageResult, contentHint: ContentHint, messageId: MessageId): Long { fun insertIfPossible(recipientId: RecipientId, sentTimestamp: Long, sendMessageResult: SendMessageResult, contentHint: ContentHint, messageId: MessageId): Long {
if (!FeatureFlags.senderKey()) return -1 if (!FeatureFlags.retryReceipts()) return -1
if (sendMessageResult.isSuccess && sendMessageResult.success.content.isPresent) { if (sendMessageResult.isSuccess && sendMessageResult.success.content.isPresent) {
val recipientDevice = listOf(RecipientDevice(recipientId, sendMessageResult.success.devices)) val recipientDevice = listOf(RecipientDevice(recipientId, sendMessageResult.success.devices))
@ -162,7 +162,7 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
/** @return The ID of the inserted entry, or -1 if none was inserted. Can be used with [addRecipientToExistingEntryIfPossible] */ /** @return The ID of the inserted entry, or -1 if none was inserted. Can be used with [addRecipientToExistingEntryIfPossible] */
fun insertIfPossible(recipientId: RecipientId, sentTimestamp: Long, sendMessageResult: SendMessageResult, contentHint: ContentHint, messageIds: List<MessageId>): Long { fun insertIfPossible(recipientId: RecipientId, sentTimestamp: Long, sendMessageResult: SendMessageResult, contentHint: ContentHint, messageIds: List<MessageId>): Long {
if (!FeatureFlags.senderKey()) return -1 if (!FeatureFlags.retryReceipts()) return -1
if (sendMessageResult.isSuccess && sendMessageResult.success.content.isPresent) { if (sendMessageResult.isSuccess && sendMessageResult.success.content.isPresent) {
val recipientDevice = listOf(RecipientDevice(recipientId, sendMessageResult.success.devices)) val recipientDevice = listOf(RecipientDevice(recipientId, sendMessageResult.success.devices))
@ -174,7 +174,7 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
/** @return The ID of the inserted entry, or -1 if none was inserted. Can be used with [addRecipientToExistingEntryIfPossible] */ /** @return The ID of the inserted entry, or -1 if none was inserted. Can be used with [addRecipientToExistingEntryIfPossible] */
fun insertIfPossible(sentTimestamp: Long, possibleRecipients: List<Recipient>, results: List<SendMessageResult>, contentHint: ContentHint, messageId: MessageId): Long { fun insertIfPossible(sentTimestamp: Long, possibleRecipients: List<Recipient>, results: List<SendMessageResult>, contentHint: ContentHint, messageId: MessageId): Long {
if (!FeatureFlags.senderKey()) return -1 if (!FeatureFlags.retryReceipts()) return -1
val accessList = RecipientAccessList(possibleRecipients) val accessList = RecipientAccessList(possibleRecipients)
@ -195,7 +195,7 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
} }
fun addRecipientToExistingEntryIfPossible(payloadId: Long, recipientId: RecipientId, sendMessageResult: SendMessageResult) { fun addRecipientToExistingEntryIfPossible(payloadId: Long, recipientId: RecipientId, sendMessageResult: SendMessageResult) {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
if (sendMessageResult.isSuccess && sendMessageResult.success.content.isPresent) { if (sendMessageResult.isSuccess && sendMessageResult.success.content.isPresent) {
val db = databaseHelper.writableDatabase val db = databaseHelper.writableDatabase
@ -262,7 +262,7 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
} }
fun getLogEntry(recipientId: RecipientId, device: Int, dateSent: Long): MessageLogEntry? { fun getLogEntry(recipientId: RecipientId, device: Int, dateSent: Long): MessageLogEntry? {
if (!FeatureFlags.senderKey()) return null if (!FeatureFlags.retryReceipts()) return null
trimOldMessages(System.currentTimeMillis(), FeatureFlags.retryRespondMaxAge()) trimOldMessages(System.currentTimeMillis(), FeatureFlags.retryRespondMaxAge())
@ -302,7 +302,7 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
} }
fun deleteAllRelatedToMessage(messageId: Long, mms: Boolean) { fun deleteAllRelatedToMessage(messageId: Long, mms: Boolean) {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
val db = databaseHelper.writableDatabase val db = databaseHelper.writableDatabase
val query = "${PayloadTable.ID} IN (SELECT ${MessageTable.PAYLOAD_ID} FROM ${MessageTable.TABLE_NAME} WHERE ${MessageTable.MESSAGE_ID} = ? AND ${MessageTable.IS_MMS} = ?)" val query = "${PayloadTable.ID} IN (SELECT ${MessageTable.PAYLOAD_ID} FROM ${MessageTable.TABLE_NAME} WHERE ${MessageTable.MESSAGE_ID} = ? AND ${MessageTable.IS_MMS} = ?)"
@ -312,13 +312,13 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
} }
fun deleteEntryForRecipient(dateSent: Long, recipientId: RecipientId, device: Int) { fun deleteEntryForRecipient(dateSent: Long, recipientId: RecipientId, device: Int) {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
deleteEntriesForRecipient(listOf(dateSent), recipientId, device) deleteEntriesForRecipient(listOf(dateSent), recipientId, device)
} }
fun deleteEntriesForRecipient(dateSent: List<Long>, recipientId: RecipientId, device: Int) { fun deleteEntriesForRecipient(dateSent: List<Long>, recipientId: RecipientId, device: Int) {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
val db = databaseHelper.writableDatabase val db = databaseHelper.writableDatabase
@ -346,13 +346,13 @@ class MessageSendLogDatabase constructor(context: Context?, databaseHelper: SQLC
} }
fun deleteAll() { fun deleteAll() {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
databaseHelper.writableDatabase.delete(PayloadTable.TABLE_NAME, null, null) databaseHelper.writableDatabase.delete(PayloadTable.TABLE_NAME, null, null)
} }
fun trimOldMessages(currentTime: Long, maxAge: Long) { fun trimOldMessages(currentTime: Long, maxAge: Long) {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
val db = databaseHelper.writableDatabase val db = databaseHelper.writableDatabase
val query = "${PayloadTable.DATE_SENT} < ?" val query = "${PayloadTable.DATE_SENT} < ?"

Wyświetl plik

@ -23,7 +23,7 @@ class PendingRetryReceiptCache @VisibleForTesting constructor(
private var populated: Boolean = false private var populated: Boolean = false
fun insert(author: RecipientId, authorDevice: Int, sentTimestamp: Long, receivedTimestamp: Long, threadId: Long) { fun insert(author: RecipientId, authorDevice: Int, sentTimestamp: Long, receivedTimestamp: Long, threadId: Long) {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
ensurePopulated() ensurePopulated()
synchronized(pendingRetries) { synchronized(pendingRetries) {
@ -33,7 +33,7 @@ class PendingRetryReceiptCache @VisibleForTesting constructor(
} }
fun get(author: RecipientId, sentTimestamp: Long): PendingRetryReceiptModel? { fun get(author: RecipientId, sentTimestamp: Long): PendingRetryReceiptModel? {
if (!FeatureFlags.senderKey()) return null if (!FeatureFlags.retryReceipts()) return null
ensurePopulated() ensurePopulated()
synchronized(pendingRetries) { synchronized(pendingRetries) {
@ -42,7 +42,7 @@ class PendingRetryReceiptCache @VisibleForTesting constructor(
} }
fun getOldest(): PendingRetryReceiptModel? { fun getOldest(): PendingRetryReceiptModel? {
if (!FeatureFlags.senderKey()) return null if (!FeatureFlags.retryReceipts()) return null
ensurePopulated() ensurePopulated()
synchronized(pendingRetries) { synchronized(pendingRetries) {
@ -51,7 +51,7 @@ class PendingRetryReceiptCache @VisibleForTesting constructor(
} }
fun delete(model: PendingRetryReceiptModel) { fun delete(model: PendingRetryReceiptModel) {
if (!FeatureFlags.senderKey()) return if (!FeatureFlags.retryReceipts()) return
ensurePopulated() ensurePopulated()
synchronized(pendingRetries) { synchronized(pendingRetries) {

Wyświetl plik

@ -1787,8 +1787,8 @@ public final class MessageContentProcessor {
} }
private void handleRetryReceipt(@NonNull SignalServiceContent content, @NonNull DecryptionErrorMessage decryptionErrorMessage, @NonNull Recipient senderRecipient) { private void handleRetryReceipt(@NonNull SignalServiceContent content, @NonNull DecryptionErrorMessage decryptionErrorMessage, @NonNull Recipient senderRecipient) {
if (!FeatureFlags.senderKey()) { if (!FeatureFlags.retryReceipts()) {
warn(String.valueOf(content.getTimestamp()), "[RetryReceipt] Sender key not enabled, skipping retry receipt."); warn(String.valueOf(content.getTimestamp()), "[RetryReceipt] Feature flag disabled, skipping retry receipt.");
return; return;
} }

Wyświetl plik

@ -96,7 +96,7 @@ public final class MessageDecryptionUtil {
Log.w(TAG, String.valueOf(envelope.getTimestamp()), e); Log.w(TAG, String.valueOf(envelope.getTimestamp()), e);
Recipient sender = Recipient.external(context, e.getSender()); Recipient sender = Recipient.external(context, e.getSender());
if (sender.supportsMessageRetries() && Recipient.self().supportsMessageRetries() && FeatureFlags.senderKey()) { if (sender.supportsMessageRetries() && Recipient.self().supportsMessageRetries() && FeatureFlags.retryReceipts()) {
jobs.add(handleRetry(context, sender, envelope, e)); jobs.add(handleRetry(context, sender, envelope, e));
postInternalErrorNotification(context); postInternalErrorNotification(context);
} else { } else {

Wyświetl plik

@ -78,7 +78,8 @@ public final class FeatureFlags {
private static final String MEDIA_QUALITY_LEVELS = "android.mediaQuality.levels"; private static final String MEDIA_QUALITY_LEVELS = "android.mediaQuality.levels";
private static final String RETRY_RECEIPT_LIFESPAN = "android.retryReceiptLifespan"; private static final String RETRY_RECEIPT_LIFESPAN = "android.retryReceiptLifespan";
private static final String RETRY_RESPOND_MAX_AGE = "android.retryRespondMaxAge"; private static final String RETRY_RESPOND_MAX_AGE = "android.retryRespondMaxAge";
private static final String SENDER_KEY = "android.senderKey.3"; private static final String SENDER_KEY = "android.senderKey.4";
private static final String RETRY_RECEIPTS = "android.retryReceipts";
private static final String SUGGEST_SMS_BLACKLIST = "android.suggestSmsBlacklist"; private static final String SUGGEST_SMS_BLACKLIST = "android.suggestSmsBlacklist";
private static final String ANNOUNCEMENT_GROUPS = "android.announcementGroups"; private static final String ANNOUNCEMENT_GROUPS = "android.announcementGroups";
@ -114,6 +115,7 @@ public final class FeatureFlags {
RETRY_RECEIPT_LIFESPAN, RETRY_RECEIPT_LIFESPAN,
RETRY_RESPOND_MAX_AGE, RETRY_RESPOND_MAX_AGE,
SENDER_KEY, SENDER_KEY,
RETRY_RECEIPTS,
SUGGEST_SMS_BLACKLIST, SUGGEST_SMS_BLACKLIST,
ANNOUNCEMENT_GROUPS ANNOUNCEMENT_GROUPS
); );
@ -162,7 +164,9 @@ public final class FeatureFlags {
MEDIA_QUALITY_LEVELS, MEDIA_QUALITY_LEVELS,
RETRY_RECEIPT_LIFESPAN, RETRY_RECEIPT_LIFESPAN,
RETRY_RESPOND_MAX_AGE, RETRY_RESPOND_MAX_AGE,
SUGGEST_SMS_BLACKLIST SUGGEST_SMS_BLACKLIST,
RETRY_RECEIPTS,
SENDER_KEY
); );
/** /**
@ -349,6 +353,11 @@ public final class FeatureFlags {
return getString(MEDIA_QUALITY_LEVELS, ""); return getString(MEDIA_QUALITY_LEVELS, "");
} }
/** Whether or not sending or responding to retry receipts is enabled. */
public static boolean retryReceipts() {
return getBoolean(RETRY_RECEIPTS, false);
}
/** How long to wait before considering a retry to be a failure. */ /** How long to wait before considering a retry to be a failure. */
public static long retryReceiptLifespan() { public static long retryReceiptLifespan() {
return getLong(RETRY_RECEIPT_LIFESPAN, TimeUnit.HOURS.toMillis(1)); return getLong(RETRY_RECEIPT_LIFESPAN, TimeUnit.HOURS.toMillis(1));