From 5bfc73fafbf7519059cf86cfb203ab15260d0f8c Mon Sep 17 00:00:00 2001 From: andrea Date: Sat, 1 Aug 2015 16:45:28 +0200 Subject: [PATCH] Minor changes --- .../moquette/spi/impl/subscriptions/SubscriptionsStore.java | 5 ++--- .../spi/impl/subscriptions/SubscriptionsStoreTest.java | 5 +++++ .../org/eclipse/moquette/parser/netty/PublishDecoder.java | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/broker/src/main/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStore.java b/broker/src/main/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStore.java index e76da16c..dff1c5ea 100644 --- a/broker/src/main/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStore.java +++ b/broker/src/main/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStore.java @@ -275,9 +275,8 @@ public class SubscriptionsStore { List msgTokens = SubscriptionsStore.parseTopic(msgTopic); List subscriptionTokens = SubscriptionsStore.parseTopic(subscriptionTopic); int i = 0; - Token subToken = null; for (; i< subscriptionTokens.size(); i++) { - subToken = subscriptionTokens.get(i); + Token subToken = subscriptionTokens.get(i); if (subToken != Token.MULTI && subToken != Token.SINGLE) { if (i >= msgTokens.size()) { return false; @@ -297,7 +296,7 @@ public class SubscriptionsStore { } //if last token was a SINGLE then treat it as an empty // if (subToken == Token.SINGLE && (i - msgTokens.size() == 1)) { -// i--; +// i--; // } return i == msgTokens.size(); } catch (ParseException ex) { diff --git a/broker/src/test/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStoreTest.java b/broker/src/test/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStoreTest.java index ef8ebaa1..3dbd651c 100644 --- a/broker/src/test/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStoreTest.java +++ b/broker/src/test/java/org/eclipse/moquette/spi/impl/subscriptions/SubscriptionsStoreTest.java @@ -80,6 +80,11 @@ public class SubscriptionsStoreTest { store.parseTopic("finance#"); } + @Test(expected = ParseException.class) + public void testParseTopicMultiNotAlone() throws ParseException { + store.parseTopic("/finance/#closingprice"); + } + @Test public void testParseTopicSingleValid() throws ParseException { List tokens = store.parseTopic("finance/stock/+"); diff --git a/netty_parser/src/main/java/org/eclipse/moquette/parser/netty/PublishDecoder.java b/netty_parser/src/main/java/org/eclipse/moquette/parser/netty/PublishDecoder.java index d7e5b36b..ada462bd 100644 --- a/netty_parser/src/main/java/org/eclipse/moquette/parser/netty/PublishDecoder.java +++ b/netty_parser/src/main/java/org/eclipse/moquette/parser/netty/PublishDecoder.java @@ -66,6 +66,7 @@ class PublishDecoder extends DemuxDecoder { in.resetReaderIndex(); return; } + //[MQTT-3.3.2-2] The Topic Name in the PUBLISH Packet MUST NOT contain wildcard characters. if (topic.contains("+") || topic.contains("#")) { throw new CorruptedFrameException("Received a PUBLISH with topic containing wild card chars, topic: " + topic); }