]> nmode's Git Repositories - signal-cli/commitdiff
Improve receiving unidentified messages
authorAsamK <asamk@gmx.de>
Mon, 11 Nov 2019 20:22:12 +0000 (21:22 +0100)
committerAsamK <asamk@gmx.de>
Mon, 11 Nov 2019 20:22:12 +0000 (21:22 +0100)
src/main/java/org/asamk/signal/JsonMessageEnvelope.java
src/main/java/org/asamk/signal/ReceiveMessageHandler.java

index 2e3018a336c0d0926841026b4bd0d34b0bb2aefc..b0d49ca52d3b7b4734a22e2c77fc6d898fb00e12 100644 (file)
@@ -20,14 +20,14 @@ class JsonMessageEnvelope {
         SignalServiceAddress source = envelope.getSourceAddress();
         this.source = source.getNumber();
         this.sourceDevice = envelope.getSourceDevice();
         SignalServiceAddress source = envelope.getSourceAddress();
         this.source = source.getNumber();
         this.sourceDevice = envelope.getSourceDevice();
-        if (this.source.equals("")) {
-            this.source = content.getSender();
-            this.sourceDevice = content.getSenderDevice();
-        }
         this.relay = source.getRelay().isPresent() ? source.getRelay().get() : null;
         this.timestamp = envelope.getTimestamp();
         this.isReceipt = envelope.isReceipt();
         if (content != null) {
         this.relay = source.getRelay().isPresent() ? source.getRelay().get() : null;
         this.timestamp = envelope.getTimestamp();
         this.isReceipt = envelope.isReceipt();
         if (content != null) {
+            if (envelope.isUnidentifiedSender()) {
+                this.source = content.getSender();
+                this.sourceDevice = content.getSenderDevice();
+            }
             if (content.getDataMessage().isPresent()) {
                 this.dataMessage = new JsonDataMessage(content.getDataMessage().get());
             }
             if (content.getDataMessage().isPresent()) {
                 this.dataMessage = new JsonDataMessage(content.getDataMessage().get());
             }
index d11597a9c7b1ada03190fe523a11f794c0f99cb8..e2cb66369ebdf7dd5dc1c4a995038b2d3c3940db 100644 (file)
@@ -43,14 +43,8 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
     @Override
     public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
         SignalServiceAddress source = envelope.getSourceAddress();
     @Override
     public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
         SignalServiceAddress source = envelope.getSourceAddress();
-        String sender = source.getNumber();
-        int senderDeviceId = envelope.getSourceDevice();
-        if (sender.equals("")) {
-            sender = content.getSender();
-            senderDeviceId = content.getSenderDevice();
-        }
-        ContactInfo sourceContact = m.getContact(sender);
-        System.out.println(String.format("Envelope from: %s (device: %d)", (sourceContact == null ? "" : "“" + sourceContact.name + "” ") + sender, senderDeviceId));
+        ContactInfo sourceContact = m.getContact(source.getNumber());
+        System.out.println(String.format("Envelope from: %s (device: %d)", (sourceContact == null ? "" : "“" + sourceContact.name + "” ") + source.getNumber(), envelope.getSourceDevice()));
         if (source.getRelay().isPresent()) {
             System.out.println("Relayed by: " + source.getRelay().get());
         }
         if (source.getRelay().isPresent()) {
             System.out.println("Relayed by: " + source.getRelay().get());
         }
@@ -61,7 +55,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
 
         if (envelope.isReceipt()) {
             System.out.println("Got receipt.");
 
         if (envelope.isReceipt()) {
             System.out.println("Got receipt.");
-        } else if (envelope.isSignalMessage() | envelope.isPreKeySignalMessage()) {
+        } else if (envelope.isSignalMessage() || envelope.isPreKeySignalMessage() || envelope.isUnidentifiedSender()) {
             if (exception != null) {
                 if (exception instanceof org.whispersystems.libsignal.UntrustedIdentityException) {
                     org.whispersystems.libsignal.UntrustedIdentityException e = (org.whispersystems.libsignal.UntrustedIdentityException) exception;
             if (exception != null) {
                 if (exception instanceof org.whispersystems.libsignal.UntrustedIdentityException) {
                     org.whispersystems.libsignal.UntrustedIdentityException e = (org.whispersystems.libsignal.UntrustedIdentityException) exception;
@@ -75,6 +69,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
             if (content == null) {
                 System.out.println("Failed to decrypt message.");
             } else {
             if (content == null) {
                 System.out.println("Failed to decrypt message.");
             } else {
+                System.out.println(String.format("Sender: %s (device: %d)", content.getSender(), content.getSenderDevice()));
                 if (content.getDataMessage().isPresent()) {
                     SignalServiceDataMessage message = content.getDataMessage().get();
                     handleSignalServiceDataMessage(message);
                 if (content.getDataMessage().isPresent()) {
                     SignalServiceDataMessage message = content.getDataMessage().get();
                     handleSignalServiceDataMessage(message);