Skip to content

Commit 98b2f37

Browse files
authored
Merge pull request #4569 from shraddhabang/regexBug
Fix rule optimizer incorrectly removing regex-based listener rules
2 parents ecc3009 + cbcd1a6 commit 98b2f37

File tree

2 files changed

+1040
-2
lines changed

2 files changed

+1040
-2
lines changed

pkg/ingress/rule_optimizer.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ func isInfiniteRedirectRule(port int32, protocol elbv2model.Protocol, rule Rule)
9898
case condition.Field == elbv2model.RuleConditionFieldHostHeader && condition.HostHeaderConfig != nil:
9999
ruleHosts.Insert(condition.HostHeaderConfig.Values...)
100100
case condition.Field == elbv2model.RuleConditionFieldPathPattern && condition.PathPatternConfig != nil:
101+
// We dont check for infinite rules for regex paths
102+
if len(condition.PathPatternConfig.RegexValues) > 0 {
103+
return false
104+
}
101105
rulePaths.Insert(condition.PathPatternConfig.Values...)
102106
}
103107
}
@@ -146,7 +150,11 @@ func isSupersetConditions(lhsConditions []elbv2model.RuleCondition, rhsCondition
146150
case condition.Field == elbv2model.RuleConditionFieldHostHeader && condition.HostHeaderConfig != nil:
147151
lhsHosts.Insert(condition.HostHeaderConfig.Values...)
148152
case condition.Field == elbv2model.RuleConditionFieldPathPattern && condition.PathPatternConfig != nil:
149-
lhsPaths.Insert(condition.PathPatternConfig.Values...)
153+
if len(condition.PathPatternConfig.RegexValues) > 0 {
154+
lhsPaths.Insert(condition.PathPatternConfig.RegexValues...)
155+
} else {
156+
lhsPaths.Insert(condition.PathPatternConfig.Values...)
157+
}
150158
default:
151159
// if there are any other conditions, then we treat it as not superset.
152160
return false
@@ -160,7 +168,11 @@ func isSupersetConditions(lhsConditions []elbv2model.RuleCondition, rhsCondition
160168
case condition.Field == elbv2model.RuleConditionFieldHostHeader && condition.HostHeaderConfig != nil:
161169
rhsHosts.Insert(condition.HostHeaderConfig.Values...)
162170
case condition.Field == elbv2model.RuleConditionFieldPathPattern && condition.PathPatternConfig != nil:
163-
rhsPaths.Insert(condition.PathPatternConfig.Values...)
171+
if len(condition.PathPatternConfig.RegexValues) > 0 {
172+
rhsPaths.Insert(condition.PathPatternConfig.RegexValues...)
173+
} else {
174+
rhsPaths.Insert(condition.PathPatternConfig.Values...)
175+
}
164176
}
165177
}
166178

0 commit comments

Comments
 (0)