]> nmode's Git Repositories - signal-cli/commitdiff
Always renew session when failing to decrypt message
authorAsamK <asamk@gmx.de>
Mon, 31 Mar 2025 07:11:05 +0000 (09:11 +0200)
committerAsamK <asamk@gmx.de>
Mon, 31 Mar 2025 07:11:05 +0000 (09:11 +0200)
lib/src/main/java/org/asamk/signal/manager/actions/RenewSessionAction.java
lib/src/main/java/org/asamk/signal/manager/actions/SendRetryMessageRequestAction.java
lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java

index 401172463af9d5d4e4f6f5c9242ce943146e70bc..3505894028795f88a4ce1cf1c1118e9d80afcb1e 100644 (file)
@@ -19,9 +19,7 @@ public class RenewSessionAction implements HandleAction {
     @Override
     public void execute(Context context) throws Throwable {
         context.getAccount().getAccountData(accountId).getSessionStore().archiveSessions(serviceId);
-        if (!recipientId.equals(context.getAccount().getSelfRecipientId())) {
-            context.getSendHelper().sendNullMessage(recipientId);
-        }
+        context.getSendHelper().sendNullMessage(recipientId);
     }
 
     @Override
index 865f062f3ca830156c72ea04baac62ff65c39332..96a94128a329f6cd0d4dcf281685896d03359775 100644 (file)
@@ -7,7 +7,6 @@ import org.signal.libsignal.metadata.ProtocolException;
 import org.signal.libsignal.protocol.message.CiphertextMessage;
 import org.signal.libsignal.protocol.message.DecryptionErrorMessage;
 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
-import org.whispersystems.signalservice.api.push.ServiceId;
 import org.whispersystems.signalservice.internal.push.Envelope;
 
 import java.util.Optional;
@@ -15,29 +14,21 @@ import java.util.Optional;
 public class SendRetryMessageRequestAction implements HandleAction {
 
     private final RecipientId recipientId;
-    private final ServiceId serviceId;
     private final ProtocolException protocolException;
     private final SignalServiceEnvelope envelope;
-    private final ServiceId accountId;
 
     public SendRetryMessageRequestAction(
             final RecipientId recipientId,
-            final ServiceId serviceId,
             final ProtocolException protocolException,
-            final SignalServiceEnvelope envelope,
-            final ServiceId accountId
+            final SignalServiceEnvelope envelope
     ) {
         this.recipientId = recipientId;
-        this.serviceId = serviceId;
         this.protocolException = protocolException;
         this.envelope = envelope;
-        this.accountId = accountId;
     }
 
     @Override
     public void execute(Context context) throws Throwable {
-        context.getAccount().getAccountData(accountId).getSessionStore().archiveSessions(serviceId);
-
         int senderDevice = protocolException.getSenderDevice();
         Optional<GroupId> groupId = protocolException.getGroupId().isPresent() ? Optional.of(GroupId.unknownVersion(
                 protocolException.getGroupId().get())) : Optional.empty();
index 90d67a362e8fa2615b7341e384f70db972f17c4c..1e808e64af27d36a414cbe52887137cfdfaa2ac2 100644 (file)
@@ -165,12 +165,11 @@ public final class IncomingMessageHandler {
                     if (serviceId != null) {
                         final var isSelf = sender.equals(account.getSelfRecipientId())
                                 && e.getSenderDevice() == account.getDeviceId();
+                        logger.debug("Received invalid message, queuing renew session action.");
+                        actions.add(new RenewSessionAction(sender, serviceId, destination));
                         if (!isSelf) {
                             logger.debug("Received invalid message, requesting message resend.");
-                            actions.add(new SendRetryMessageRequestAction(sender, serviceId, e, envelope, destination));
-                        } else {
-                            logger.debug("Received invalid message, queuing renew session action.");
-                            actions.add(new RenewSessionAction(sender, serviceId, destination));
+                            actions.add(new SendRetryMessageRequestAction(sender, e, envelope));
                         }
                     } else {
                         logger.debug("Received invalid message from invalid sender: {}", e.getSender());