]> nmode's Git Repositories - signal-cli/commitdiff
Handle end session messages
authorAsamK <asamk@gmx.de>
Tue, 7 Jul 2015 10:19:10 +0000 (12:19 +0200)
committerAsamK <asamk@gmx.de>
Tue, 7 Jul 2015 10:19:10 +0000 (12:19 +0200)
src/main/java/cli/JsonSessionStore.java
src/main/java/cli/Main.java
src/main/java/cli/Manager.java

index b070334b31f7ba0ff50e007ef47cd55c4426c435..c034fc2cd47b06b41e8de62249021a291e8345cd 100644 (file)
@@ -7,10 +7,7 @@ import org.whispersystems.libaxolotl.state.SessionRecord;
 import org.whispersystems.libaxolotl.state.SessionStore;
 
 import java.io.IOException;
 import org.whispersystems.libaxolotl.state.SessionStore;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class JsonSessionStore implements SessionStore {
 
 
 public class JsonSessionStore implements SessionStore {
 
@@ -85,7 +82,7 @@ public class JsonSessionStore implements SessionStore {
 
     @Override
     public synchronized void deleteAllSessions(String name) {
 
     @Override
     public synchronized void deleteAllSessions(String name) {
-        for (AxolotlAddress key : sessions.keySet()) {
+        for (AxolotlAddress key : new ArrayList<>(sessions.keySet())) {
             if (key.getName().equals(name)) {
                 sessions.remove(key);
             }
             if (key.getName().equals(name)) {
                 sessions.remove(key);
             }
index 35b7c254cc5f58aa5b2a826dda00fe3a6b44a86a..f6b6bb7093197a9d07a02e2a0e4e54860789b440 100644 (file)
@@ -188,9 +188,11 @@ public class Main {
                                 } else {
                                     if (content.getDataMessage().isPresent()) {
                                         TextSecureDataMessage message = content.getDataMessage().get();
                                 } else {
                                     if (content.getDataMessage().isPresent()) {
                                         TextSecureDataMessage message = content.getDataMessage().get();
-
                                         System.out.println("Body: " + message.getBody().get());
                                         System.out.println("Body: " + message.getBody().get());
-                                        if (message.getAttachments().isPresent()) {
+
+                                        if (message.isEndSession()) {
+                                            m.handleEndSession(envelope.getSource());
+                                        } else if (message.getAttachments().isPresent()) {
                                             System.out.println("Attachments: ");
                                             for (TextSecureAttachment attachment : message.getAttachments().get()) {
                                                 System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");
                                             System.out.println("Attachments: ");
                                             for (TextSecureAttachment attachment : message.getAttachments().get()) {
                                                 System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");
index 3da46f1d2fa73810dcc3814eabbde2d0bb5a63e8..7fe551a4421381fe3ad66852a4f232fb324dc3cf 100644 (file)
@@ -179,6 +179,10 @@ public class Manager {
         }
     }
 
         }
     }
 
+    public void handleEndSession(String source) {
+        axolotlStore.deleteAllSessions(source);
+    }
+
     public interface ReceiveMessageHandler {
         void handleMessage(TextSecureEnvelope envelope);
     }
     public interface ReceiveMessageHandler {
         void handleMessage(TextSecureEnvelope envelope);
     }