]> nmode's Git Repositories - signal-cli/commitdiff
Exit on timeout when receiving
authorAsamK <asamk@gmx.de>
Wed, 8 Jul 2015 09:52:06 +0000 (11:52 +0200)
committerAsamK <asamk@gmx.de>
Wed, 8 Jul 2015 09:57:18 +0000 (11:57 +0200)
- Could be made optional in the future
- Sending messages while receiving results in damaged session state
  because both save their own state

src/main/java/cli/Main.java
src/main/java/cli/Manager.java

index 4aec19205137e13569eb6c3a94cb46f47efddac5..4cdbb806fb3394eb00250320eff3f053288a7487 100644 (file)
@@ -186,7 +186,7 @@ public class Main {
                     System.exit(1);
                 }
                 try {
-                    m.receiveMessages(new Manager.ReceiveMessageHandler() {
+                    m.receiveMessages(5, true, new Manager.ReceiveMessageHandler() {
                         @Override
                         public void handleMessage(TextSecureEnvelope envelope) {
                             System.out.println("Envelope from: " + envelope.getSource());
@@ -233,5 +233,6 @@ public class Main {
                 break;
         }
         m.save();
+        System.exit(0);
     }
 }
index 177cae789d3848a1349f3cec64e342ad5ba1500e..acaa1a0c76492560c7866f568f0abb56c59458b3 100644 (file)
@@ -187,7 +187,7 @@ public class Manager {
         void handleMessage(TextSecureEnvelope envelope);
     }
 
-    public void receiveMessages(ReceiveMessageHandler handler) throws IOException {
+    public void receiveMessages(int timeoutSeconds, boolean returnOnTimeout, ReceiveMessageHandler handler) throws IOException {
         TextSecureMessageReceiver messageReceiver = new TextSecureMessageReceiver(URL, TRUST_STORE, username, password, signalingKey);
         TextSecureMessagePipe messagePipe = null;
 
@@ -197,9 +197,11 @@ public class Manager {
             while (true) {
                 TextSecureEnvelope envelope;
                 try {
-                    envelope = messagePipe.read(1, TimeUnit.MINUTES);
+                    envelope = messagePipe.read(timeoutSeconds, TimeUnit.SECONDS);
                     handler.handleMessage(envelope);
                 } catch (TimeoutException e) {
+                    if (returnOnTimeout)
+                        return;
                 } catch (InvalidVersionException e) {
                     System.out.println("Ignoring error: " + e.getMessage());
                 }