Skip to content

Commit 668e7f7

Browse files
committed
fix ListenerSetHostnameConflict
Signed-off-by: zirain <zirain2009@gmail.com>
1 parent c4124d6 commit 668e7f7

5 files changed

Lines changed: 10 additions & 9 deletions

File tree

internal/gatewayapi/listener.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func (t *Translator) ProcessListeners(gateways []*GatewayContext, xdsIR resource
105105
t.validateHostName(listener)
106106

107107
// Process conditions and check if the listener is ready
108-
t.validateListenerConditions(listener)
108+
listenerValid := t.validateListenerConditions(listener)
109109

110110
address := netutils.IPv4ListenerAddress
111111
ipFamily := getEnvoyIPFamily(gateway.envoyProxy)
@@ -123,7 +123,7 @@ func (t *Translator) ProcessListeners(gateways []*GatewayContext, xdsIR resource
123123
continue
124124
}
125125

126-
if listener.isFromListenerSet() {
126+
if listener.isFromListenerSet() && listenerValid {
127127
lsKey := types.NamespacedName{
128128
Namespace: listener.listenerSet.Namespace,
129129
Name: listener.listenerSet.Name,

internal/gatewayapi/testdata/listenerset-hostname-conflict.out.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ gateways:
2525
port: 80
2626
protocol: HTTP
2727
status:
28-
attachedListenerSets: 4
28+
attachedListenerSets: 2
2929
listeners:
3030
- attachedRoutes: 0
3131
conditions:

internal/gatewayapi/testdata/listenerset-https-tls-misuses-gateway-namespace.out.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ gateways:
2020
port: 80
2121
protocol: HTTP
2222
status:
23-
attachedListenerSets: 1
2423
listeners:
2524
- attachedRoutes: 0
2625
conditions:

internal/gatewayapi/testdata/listenerset-invalid.out.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ gateways:
2020
port: 80
2121
protocol: HTTP
2222
status:
23-
attachedListenerSets: 2
23+
attachedListenerSets: 1
2424
listeners:
2525
- attachedRoutes: 0
2626
conditions:

internal/gatewayapi/validate.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ func (t *Translator) validateBackendRefBackend(
274274
return nil
275275
}
276276

277-
func (t *Translator) validateListenerConditions(listener *ListenerContext) {
277+
func (t *Translator) validateListenerConditions(listener *ListenerContext) bool {
278278
lConditions := listener.GetConditions()
279279
if len(lConditions) == 0 {
280280
listener.SetCondition(gwapiv1.ListenerConditionProgrammed, metav1.ConditionTrue, gwapiv1.ListenerReasonProgrammed,
@@ -285,7 +285,7 @@ func (t *Translator) validateListenerConditions(listener *ListenerContext) {
285285
"Listener references have been resolved")
286286
listener.SetCondition(gwapiv1.ListenerConditionConflicted, metav1.ConditionFalse, gwapiv1.ListenerReasonNoConflicts,
287287
"No conflicts detected")
288-
return
288+
return true
289289
}
290290

291291
// Edge case: only one condition which is ResolvedRefs=False, Reason=PartiallyInvalidCertificateRef
@@ -296,7 +296,7 @@ func (t *Translator) validateListenerConditions(listener *ListenerContext) {
296296
"Listener has been successfully translated")
297297
listener.SetCondition(gwapiv1.ListenerConditionProgrammed, metav1.ConditionTrue, gwapiv1.ListenerReasonProgrammed,
298298
"Sending translated listener configuration to the data plane")
299-
return
299+
return true
300300
}
301301

302302
// Any condition on the listener apart from Programmed=true indicates an error.
@@ -332,8 +332,10 @@ func (t *Translator) validateListenerConditions(listener *ListenerContext) {
332332
)
333333
}
334334
// skip computing IR
335-
return
335+
return false
336336
}
337+
338+
return true
337339
}
338340

339341
func (t *Translator) validateAllowedNamespaces(listener *ListenerContext) {

0 commit comments

Comments
 (0)