]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java
Reset pre key offset if it somehow gets corrupted
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / PreKeyHelper.java
index 3fc1a5bf10e6b640524cb9f3cf4eceac2ba9ea74..30ab919e08b0454ff94871562805611c206cf3ea 100644 (file)
@@ -53,6 +53,18 @@ public class PreKeyHelper {
         if (accountId == null) {
             return;
         }
+        try {
+            refreshPreKeys(serviceIdType, identityKeyPair);
+        } catch (Exception e) {
+            logger.warn("Failed to store new pre keys, resetting preKey id offset", e);
+            account.resetPreKeyOffsets(serviceIdType);
+            refreshPreKeys(serviceIdType, identityKeyPair);
+        }
+    }
+
+    private void refreshPreKeys(
+            final ServiceIdType serviceIdType, final IdentityKeyPair identityKeyPair
+    ) throws IOException {
         final var oneTimePreKeys = generatePreKeys(serviceIdType);
         final var signedPreKeyRecord = generateSignedPreKey(serviceIdType, identityKeyPair);