Merge pull request #1076 from dagophil/bug/topic-filter-comparer-edge-case

The topic filter comparer now checks for e.g. "foo/" matching "foo/#".
This commit is contained in:
HansM
2021-01-29 18:24:37 +01:00
committed by GitHub
2 changed files with 13 additions and 0 deletions
@@ -31,6 +31,13 @@ namespace MQTTnet.Server
{
return true;
}
// Check for e.g. foo/ matching foo/#
if (sPos == sLen - 2
&& filter[sPos] == LevelSeparator
&& filter[sPos + 1] == MultiLevelWildcard)
{
return true;
}
}
sPos++;
@@ -54,6 +54,12 @@ namespace MQTTnet.Tests
CompareAndAssert("A/B/C/D", "A/C/#", false);
}
[TestMethod]
public void TopicFilterComparer_EndMultipleLevelsWildcardMatchEmptyLevel()
{
CompareAndAssert("A/", "A/#", true);
}
[TestMethod]
public void TopicFilterComparer_AllLevelsWildcardMatch()
{