]> nmode's Git Repositories - signal-cli/commitdiff
Output sender also for sealed sender messages that fail to decrypt
authorAsamK <asamk@gmx.de>
Thu, 27 Jan 2022 19:03:43 +0000 (20:03 +0100)
committerAsamK <asamk@gmx.de>
Thu, 27 Jan 2022 19:08:27 +0000 (20:08 +0100)
lib/src/main/java/org/asamk/signal/manager/api/MessageEnvelope.java
lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java

index dde8e1665de1eae221ee5602afc8b4afceacd8e6..73e7fe1903601063a3b2cfc13c09b85f358a4e7d 100644 (file)
@@ -5,6 +5,7 @@ import org.asamk.signal.manager.groups.GroupUtils;
 import org.asamk.signal.manager.helper.RecipientAddressResolver;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.manager.storage.recipients.RecipientResolver;
+import org.signal.libsignal.metadata.ProtocolException;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemoteId;
 import org.whispersystems.signalservice.api.messages.SignalServiceContent;
@@ -789,16 +790,21 @@ public record MessageEnvelope(
             SignalServiceContent content,
             RecipientResolver recipientResolver,
             RecipientAddressResolver addressResolver,
-            final AttachmentFileProvider fileProvider
+            final AttachmentFileProvider fileProvider,
+            Exception exception
     ) {
         final var source = !envelope.isUnidentifiedSender() && envelope.hasSourceUuid()
                 ? recipientResolver.resolveRecipient(envelope.getSourceAddress())
                 : envelope.isUnidentifiedSender() && content != null
                         ? recipientResolver.resolveRecipient(content.getSender())
-                        : null;
+                        : exception instanceof ProtocolException e
+                                ? recipientResolver.resolveRecipient(e.getSender())
+                                : null;
         final var sourceDevice = envelope.hasSourceDevice()
                 ? envelope.getSourceDevice()
-                : content != null ? content.getSenderDevice() : 0;
+                : content != null
+                        ? content.getSenderDevice()
+                        : exception instanceof ProtocolException e ? e.getSenderDevice() : 0;
 
         Optional<Receipt> receipt;
         Optional<Typing> typing;
index 0ef974e00c11f3427db535357ccb276420a62dc0..d7a50971c4853165575ff4f3e4d7435fcc9f950b 100644 (file)
@@ -184,7 +184,8 @@ public final class IncomingMessageHandler {
                     content,
                     account.getRecipientStore(),
                     account.getRecipientStore()::resolveRecipientAddress,
-                    context.getAttachmentHelper()::getAttachmentFile), exception);
+                    context.getAttachmentHelper()::getAttachmentFile,
+                    exception), exception);
             return actions;
         }
     }