]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java
Implement simple handling of incoming decryption error message
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / IncomingMessageHandler.java
index 301e0e5a9dd34ef47571c938c2c9593878775f4b..3fc040bc737d917dba057b74b7ef3f129bf9cd3e 100644 (file)
@@ -233,6 +233,16 @@ public final class IncomingMessageHandler {
         if (content.getDecryptionErrorMessage().isPresent()) {
             var message = content.getDecryptionErrorMessage().get();
             logger.debug("Received a decryption error message (resend request for {})", message.getTimestamp());
+            if (message.getRatchetKey().isPresent()) {
+                if (message.getDeviceId() == account.getDeviceId() && account.getSessionStore()
+                        .isCurrentRatchetKey(sender, senderDeviceId, message.getRatchetKey().get())) {
+                    logger.debug("Renewing the session with sender");
+                    actions.add(new RenewSessionAction(sender));
+                }
+            } else {
+                logger.debug("Reset shared sender keys with this recipient");
+                account.getSenderKeyStore().deleteSharedWith(sender);
+            }
         }
 
         if (content.getDataMessage().isPresent()) {