From: AsamK Date: Mon, 31 Mar 2025 07:11:05 +0000 (+0200) Subject: Always renew session when failing to decrypt message X-Git-Tag: v0.13.14~5 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/14b07be0dcc9d61eeebc857338367515a3e338b3 Always renew session when failing to decrypt message --- diff --git a/lib/src/main/java/org/asamk/signal/manager/actions/RenewSessionAction.java b/lib/src/main/java/org/asamk/signal/manager/actions/RenewSessionAction.java index 40117246..35058940 100644 --- a/lib/src/main/java/org/asamk/signal/manager/actions/RenewSessionAction.java +++ b/lib/src/main/java/org/asamk/signal/manager/actions/RenewSessionAction.java @@ -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 diff --git a/lib/src/main/java/org/asamk/signal/manager/actions/SendRetryMessageRequestAction.java b/lib/src/main/java/org/asamk/signal/manager/actions/SendRetryMessageRequestAction.java index 865f062f..96a94128 100644 --- a/lib/src/main/java/org/asamk/signal/manager/actions/SendRetryMessageRequestAction.java +++ b/lib/src/main/java/org/asamk/signal/manager/actions/SendRetryMessageRequestAction.java @@ -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 = protocolException.getGroupId().isPresent() ? Optional.of(GroupId.unknownVersion( protocolException.getGroupId().get())) : Optional.empty(); diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java b/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java index 90d67a36..1e808e64 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java @@ -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());