Fix TopicFilterComparer

This commit is contained in:
Christian
2018-04-28 13:05:22 +02:00
parent 74a5522965
commit 357fd844d7
@@ -19,12 +19,17 @@ namespace MQTTnet.Server
var fragmentsTopic = topic.Split(TopicLevelSeparator, StringSplitOptions.None); var fragmentsTopic = topic.Split(TopicLevelSeparator, StringSplitOptions.None);
var fragmentsFilter = filter.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++) for (var i = 0; i < fragmentsFilter.Length; i++)
{ {
switch (fragmentsFilter[i]) if (fragmentsFilter[i] == "+")
{ {
case "+": continue; continue;
case "#" when i == fragmentsFilter.Length - 1: return true; }
if (fragmentsFilter[i] == "#")
{
return true;
} }
if (i >= fragmentsTopic.Length) if (i >= fragmentsTopic.Length)
@@ -38,7 +43,7 @@ namespace MQTTnet.Server
} }
} }
return fragmentsTopic.Length <= fragmentsFilter.Length; return fragmentsTopic.Length == fragmentsFilter.Length;
} }
} }
} }