Неверное соответствие DomainNameMapping? - PullRequest
1 голос
/ 03 июля 2019

У меня есть следующее DomainNameMapping, которое содержит следующие два сопоставления.

"*. App.example.com" => A

"*. Example.com" => B

Когда я пытаюсь отобразить хост "app.example.com", я получаю вывод A. Я ожидаю, что вместо этого DomainNameMapping совпадет с "* .example.com", и вывод B будет возвращен.

Глядя на исходный код Netty, кажется, что он удовлетворяет первому условию метода совпадений (String, String).

static boolean matches(String template, String hostName) {
        if (template.startsWith("*.")) {
            return template.regionMatches(2, hostName, 0, hostName.length())
                || commonSuffixOfLength(hostName, template, template.length() - 1);
        }
        return template.equals(hostName);
}

А именно, template.regionMatches(2, hostName, 0, hostName.length()) верно в этом случае. Почему этому случаю разрешено совпадать? Мне кажется, что шаблон должен совпадать только с hostNames, у которых есть некоторый субдомен с префиксом в корневом домене, определяемый подстановочным знаком, найденным в DomainNameMapping.

...