]> nmode's Git Repositories - signal-cli/commitdiff
Fix handling incoming contacts sync message
authorAsamK <asamk@gmx.de>
Mon, 30 Aug 2021 19:07:24 +0000 (21:07 +0200)
committerAsamK <asamk@gmx.de>
Mon, 30 Aug 2021 19:07:24 +0000 (21:07 +0200)
lib/src/main/java/org/asamk/signal/manager/helper/AttachmentHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java

index d3931955b33afb1dc357e732db2b698d626b68a9..449a575ef69ece32f1ec6de2a1e4575531923c4c 100644 (file)
@@ -88,9 +88,9 @@ public class AttachmentHelper {
             SignalServiceAttachment attachment, AttachmentHandler consumer
     ) throws IOException {
         if (attachment.isStream()) {
-            try (var input = attachment.asStream().getInputStream()) {
-                consumer.handle(input);
-            }
+            var input = attachment.asStream().getInputStream();
+            // don't close input stream here, it might be reused later (e.g. with contact sync messages ...)
+            consumer.handle(input);
             return;
         }
 
index 3cc76b28b760fe6c19f8e7d05f228a81bf6ce5d4..bcdf6ab11c2c5fa72dfff979b9888e6cb327f193 100644 (file)
@@ -215,7 +215,7 @@ public class SyncHelper {
         sendHelper.sendSyncMessage(SignalServiceSyncMessage.forVerified(verifiedMessage));
     }
 
-    public void handleSyncDeviceContacts(final InputStream input) {
+    public void handleSyncDeviceContacts(final InputStream input) throws IOException {
         final var s = new DeviceContactsInputStream(input);
         DeviceContact c;
         while (true) {
@@ -226,8 +226,7 @@ public class SyncHelper {
                     logger.warn("Sync contacts contained invalid contact, ignoring: {}", e.getMessage());
                     continue;
                 } else {
-                    logger.warn("Failed to read sync contacts", e);
-                    break;
+                    throw e;
                 }
             }
             if (c == null) {