From 7db4dcf299384bf77ebf0c7afef60c603e818c41 Mon Sep 17 00:00:00 2001 From: Colorman Date: Mon, 26 Jan 2026 12:13:17 +0100 Subject: [PATCH] Fix kubernetes findMatchingHostname improperly checking specificity --- pkg/provider/kubernetes/gateway/kubernetes.go | 11 ++--------- pkg/provider/kubernetes/gateway/kubernetes_test.go | 7 +++++++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/provider/kubernetes/gateway/kubernetes.go b/pkg/provider/kubernetes/gateway/kubernetes.go index 59ef2e66b..f8c93fcca 100644 --- a/pkg/provider/kubernetes/gateway/kubernetes.go +++ b/pkg/provider/kubernetes/gateway/kubernetes.go @@ -1103,15 +1103,8 @@ func findMatchingHostname(h1, h2 gatev1.Hostname) gatev1.Hostname { return "" } - return lessWildcards(h1, h2) -} - -func lessWildcards(h1, h2 gatev1.Hostname) gatev1.Hostname { - if strings.Count(string(h1), "*") > strings.Count(string(h2), "*") { - return h2 - } - - return h1 + // since h1 is a suffix of h2, we know h2 is the more specific host + return h2 } func allowRoute(listener gatewayListener, routeNamespace, routeKind string) bool { diff --git a/pkg/provider/kubernetes/gateway/kubernetes_test.go b/pkg/provider/kubernetes/gateway/kubernetes_test.go index 1f5c1df8f..ec90bb898 100644 --- a/pkg/provider/kubernetes/gateway/kubernetes_test.go +++ b/pkg/provider/kubernetes/gateway/kubernetes_test.go @@ -7630,6 +7630,13 @@ func Test_findMatchingHostnames(t *testing.T) { want: []gatev1.Hostname{"toto.foo.com", "test.foo.com"}, wantOk: true, }, + { + desc: "Matching wildcard subsubdomain with listener wildcard subdomain", + listenerHostname: ptr.To(gatev1.Hostname("*.foo.com")), + routeHostnames: []gatev1.Hostname{"*.bar.foo.com"}, + want: []gatev1.Hostname{"*.bar.foo.com"}, + wantOk: true, + }, } for _, test := range testCases {