Automatically recover from bad encrypted messages.

This commit is contained in:
Greyson Parrelli
2021-01-08 10:23:46 -05:00
parent adea15df10
commit 728f1707b6
22 changed files with 331 additions and 51 deletions

View File

@@ -29,4 +29,7 @@ public class SessionUtil {
new TextSecureSessionStore(context).archiveAllSessions();
}
public static void archiveSession(Context context, RecipientId recipientId, int deviceId) {
new TextSecureSessionStore(context).archiveSession(recipientId, deviceId);
}
}

View File

@@ -103,6 +103,16 @@ public class TextSecureSessionStore implements SessionStore {
}
}
public void archiveSession(@NonNull RecipientId recipientId, int deviceId) {
synchronized (FILE_LOCK) {
SessionRecord session = DatabaseFactory.getSessionDatabase(context).load(recipientId, deviceId);
if (session != null) {
session.archiveCurrentState();
DatabaseFactory.getSessionDatabase(context).store(recipientId, deviceId, session);
}
}
}
public void archiveSiblingSessions(@NonNull SignalProtocolAddress address) {
synchronized (FILE_LOCK) {
if (DatabaseFactory.getRecipientDatabase(context).containsPhoneOrUuid(address.getName())) {