diff --git a/src/main/java/com/addthis/meshy/Main.java b/src/main/java/com/addthis/meshy/Main.java index 1000a33..d810c51 100644 --- a/src/main/java/com/addthis/meshy/Main.java +++ b/src/main/java/com/addthis/meshy/Main.java @@ -51,8 +51,12 @@ public static void main(String args[]) throws Exception { try (Meshy more = new MeshyClient(args[1], Integer.parseInt(args[2]))) { if (args.length > 3) { String cmd = args[3]; - if (cmd.equals("ls") && args.length > 4) { - FileSource fileSource = new FileSource(more, new String[]{args[4]}); + if (cmd.equals("ls")) { + String expr = args.length > 4 ? args[4] : "/*"; + if (expr.endsWith("/")) { + expr += "*"; + } + FileSource fileSource = new FileSource(more, new String[]{expr}); fileSource.waitComplete(); for (FileReference file : fileSource.getFileList()) { System.out.println(file.getHostUUID() + " " + file.name + " \t " + file.size + " \t " + new Date(file.lastModified)); diff --git a/src/main/java/com/addthis/meshy/service/message/MessageFileProvider.java b/src/main/java/com/addthis/meshy/service/message/MessageFileProvider.java index 94d5921..a5cfd44 100644 --- a/src/main/java/com/addthis/meshy/service/message/MessageFileProvider.java +++ b/src/main/java/com/addthis/meshy/service/message/MessageFileProvider.java @@ -44,7 +44,10 @@ public void setListener(String fileName, MessageListener listener) { return; } synchronized (listeners) { - listeners.put(fileName, listener); + if (listeners.put(fileName, listener) != null) { + log.error("preventing override of file listener for {}", fileName); + return; + } OutputStream out = source.sendMessage(MessageFileSystem.MFS_ADD); try { Bytes.writeString(fileName, out); @@ -57,6 +60,10 @@ public void setListener(String fileName, MessageListener listener) { public void deleteListener(String fileName) { synchronized (listeners) { + if (listeners.remove(fileName) == null) { + log.error("attempting to remove absent listener for {}", fileName); + return; + } OutputStream out = source.sendMessage(MessageFileSystem.MFS_DEL); try { Bytes.writeString(fileName, out); @@ -64,7 +71,6 @@ public void deleteListener(String fileName) { } catch (Exception ex) { throw new RuntimeException(ex); } - listeners.remove(fileName); } }