From 357fd844d7230f82c9f2af98ccf46dac7343386b Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 28 Apr 2018 13:05:22 +0200 Subject: [PATCH] Fix TopicFilterComparer --- .../Server/MqttTopicFilterComparer.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Frameworks/MQTTnet.NetStandard/Server/MqttTopicFilterComparer.cs b/Frameworks/MQTTnet.NetStandard/Server/MqttTopicFilterComparer.cs index 82444159..00e0bd65 100644 --- a/Frameworks/MQTTnet.NetStandard/Server/MqttTopicFilterComparer.cs +++ b/Frameworks/MQTTnet.NetStandard/Server/MqttTopicFilterComparer.cs @@ -19,12 +19,17 @@ namespace MQTTnet.Server var fragmentsTopic = topic.Split(TopicLevelSeparator, StringSplitOptions.None); var fragmentsFilter = filter.Split(TopicLevelSeparator, StringSplitOptions.None); + // # > In either case it MUST be the last character specified in the Topic Filter [MQTT-4.7.1-2]. for (var i = 0; i < fragmentsFilter.Length; i++) { - switch (fragmentsFilter[i]) + if (fragmentsFilter[i] == "+") { - case "+": continue; - case "#" when i == fragmentsFilter.Length - 1: return true; + continue; + } + + if (fragmentsFilter[i] == "#") + { + return true; } if (i >= fragmentsTopic.Length) @@ -38,7 +43,7 @@ namespace MQTTnet.Server } } - return fragmentsTopic.Length <= fragmentsFilter.Length; + return fragmentsTopic.Length == fragmentsFilter.Length; } } }