]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java
implement DBus submitRateLimitChallenge method (#763)
[signal-cli] / src / main / java / org / asamk / signal / commands / JsonRpcDispatcherCommand.java
index 6b5361e5b7943251956fdf0171219de4af321c14..9af67322197ab1335574b66226463b2445d67941 100644 (file)
@@ -65,7 +65,7 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
     public void handleCommand(
             final Namespace ns, final Manager m, final OutputWriter outputWriter
     ) throws CommandException {
-        final boolean ignoreAttachments = ns.getBoolean("ignore-attachments");
+        final boolean ignoreAttachments = Boolean.TRUE.equals(ns.getBoolean("ignore-attachments"));
 
         final var objectMapper = Util.createJsonObjectMapper();
         final var jsonRpcSender = new JsonRpcSender((JsonWriter) outputWriter);
@@ -75,6 +75,16 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
                 objectMapper.valueToTree(s),
                 null)), m, ignoreAttachments);
 
+        // Maybe this should be handled inside the Manager
+        while (!m.hasCaughtUpWithOldMessages()) {
+            try {
+                synchronized (m) {
+                    m.wait();
+                }
+            } catch (InterruptedException ignored) {
+            }
+        }
+
         final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 
         final var jsonRpcReader = new JsonRpcReader(jsonRpcSender, () -> {
@@ -168,8 +178,6 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
                     break;
                 } catch (IOException e) {
                     logger.warn("Receiving messages failed, retrying", e);
-                } catch (InterruptedException e) {
-                    break;
                 }
             }
         });