Attempt to prevent message retry loops.

This commit is contained in:
Greyson Parrelli
2024-02-23 15:36:05 -05:00
parent dc32e51ac2
commit c4842ae7c5
14 changed files with 280 additions and 73 deletions

View File

@@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.database
import android.content.Context
import org.signal.core.util.delete
import org.signal.core.util.deleteAll
import org.signal.core.util.exists
import org.signal.core.util.insertInto
import org.signal.core.util.logging.Log
@@ -171,6 +172,10 @@ class KyberPreKeyTable(context: Context, databaseHelper: SignalDatabase) : Datab
Log.i(TAG, "Deleted $count stale one-time EC prekeys.")
}
fun debugDeleteAll() {
writableDatabase.deleteAll(OneTimePreKeyTable.TABLE_NAME)
}
data class KyberPreKey(
val record: KyberPreKeyRecord,
val lastResort: Boolean

View File

@@ -5,6 +5,7 @@ import androidx.core.content.contentValuesOf
import org.signal.core.util.Base64
import org.signal.core.util.SqlUtil
import org.signal.core.util.delete
import org.signal.core.util.deleteAll
import org.signal.core.util.logging.Log
import org.signal.core.util.requireNonNullString
import org.signal.core.util.update
@@ -115,6 +116,10 @@ class OneTimePreKeyTable(context: Context, databaseHelper: SignalDatabase) : Dat
Log.i(TAG, "Deleted $count stale one-time EC prekeys.")
}
fun debugDeleteAll() {
writableDatabase.deleteAll(TABLE_NAME)
}
private fun ServiceId.toAccountId(): String {
return when (this) {
is ServiceId.ACI -> this.toString()

View File

@@ -4,6 +4,7 @@ import android.content.Context
import androidx.core.content.contentValuesOf
import org.signal.core.util.Base64
import org.signal.core.util.SqlUtil
import org.signal.core.util.deleteAll
import org.signal.core.util.logging.Log
import org.signal.core.util.requireInt
import org.signal.core.util.requireLong
@@ -103,6 +104,10 @@ class SignedPreKeyTable(context: Context, databaseHelper: SignalDatabase) : Data
writableDatabase.delete(TABLE_NAME, "$ACCOUNT_ID = ? AND $KEY_ID = ?", SqlUtil.buildArgs(serviceId.toAccountId(), keyId))
}
fun debugDeleteAll() {
writableDatabase.deleteAll(OneTimePreKeyTable.TABLE_NAME)
}
private fun ServiceId.toAccountId(): String {
return when (this) {
is ServiceId.ACI -> this.toString()