From: AsamK Date: Tue, 7 Jul 2015 10:19:10 +0000 (+0200) Subject: Handle end session messages X-Git-Tag: v0.0.2~6 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/1b0df2c7e727a2a88d50799852b49508128822b8?ds=sidebyside Handle end session messages --- diff --git a/src/main/java/cli/JsonSessionStore.java b/src/main/java/cli/JsonSessionStore.java index b070334b..c034fc2c 100644 --- a/src/main/java/cli/JsonSessionStore.java +++ b/src/main/java/cli/JsonSessionStore.java @@ -7,10 +7,7 @@ import org.whispersystems.libaxolotl.state.SessionRecord; 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 { @@ -85,7 +82,7 @@ public class JsonSessionStore implements SessionStore { @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); } diff --git a/src/main/java/cli/Main.java b/src/main/java/cli/Main.java index 35b7c254..f6b6bb70 100644 --- a/src/main/java/cli/Main.java +++ b/src/main/java/cli/Main.java @@ -188,9 +188,11 @@ public class Main { } else { if (content.getDataMessage().isPresent()) { TextSecureDataMessage message = content.getDataMessage().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" : "") + ")"); diff --git a/src/main/java/cli/Manager.java b/src/main/java/cli/Manager.java index 3da46f1d..7fe551a4 100644 --- a/src/main/java/cli/Manager.java +++ b/src/main/java/cli/Manager.java @@ -179,6 +179,10 @@ public class Manager { } } + public void handleEndSession(String source) { + axolotlStore.deleteAllSessions(source); + } + public interface ReceiveMessageHandler { void handleMessage(TextSecureEnvelope envelope); }