]> nmode's Git Repositories - signal-cli/commitdiff
Fix issue with unknown identity serviceId
authorAsamK <asamk@gmx.de>
Wed, 5 Apr 2023 09:25:53 +0000 (11:25 +0200)
committerAsamK <asamk@gmx.de>
Wed, 5 Apr 2023 09:25:53 +0000 (11:25 +0200)
Fixes #1215

lib/src/main/java/org/asamk/signal/manager/storage/AccountDatabase.java

index c08036be20ab85fe99ecfa3b1f05bcc1adc5e99c..a15b4aabc07e7c24726b4d586e3c946f3f481fe5 100644 (file)
@@ -14,6 +14,7 @@ import org.asamk.signal.manager.storage.sessions.SessionStore;
 import org.asamk.signal.manager.storage.stickers.StickerStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.whispersystems.signalservice.api.push.ServiceId;
 
 import java.io.File;
 import java.sql.Connection;
@@ -22,7 +23,7 @@ import java.sql.SQLException;
 public class AccountDatabase extends Database {
 
     private final static Logger logger = LoggerFactory.getLogger(AccountDatabase.class);
-    private static final long DATABASE_VERSION = 12;
+    private static final long DATABASE_VERSION = 13;
 
     private AccountDatabase(final HikariDataSource dataSource) {
         super(logger, DATABASE_VERSION, dataSource);
@@ -304,5 +305,28 @@ public class AccountDatabase extends Database {
                                         """);
             }
         }
+        if (oldVersion < 13) {
+            logger.debug("Updating database: Cleanup unknown service ids");
+            {
+                final var sql = """
+                                DELETE FROM identity AS i
+                                WHERE i.uuid = ?
+                                """;
+                try (final var statement = connection.prepareStatement(sql)) {
+                    statement.setBytes(1, ServiceId.UNKNOWN.toByteArray());
+                    statement.executeUpdate();
+                }
+            }
+            {
+                final var sql = """
+                                DELETE FROM sender_key_shared AS i
+                                WHERE i.uuid = ?
+                                """;
+                try (final var statement = connection.prepareStatement(sql)) {
+                    statement.setBytes(1, ServiceId.UNKNOWN.toByteArray());
+                    statement.executeUpdate();
+                }
+            }
+        }
     }
 }