Fix OrRule logic on parameter lookup failures

Fixes #471
This commit is contained in:
Cameron Moore 2020-10-24 11:40:27 -05:00
parent 67c317e741
commit dc184d2737
5 changed files with 137 additions and 3 deletions

View file

@ -848,7 +848,9 @@ func (r OrRule) Evaluate(req *Request) (bool, error) {
for _, v := range r {
rv, err := v.Evaluate(req)
if err != nil {
return false, err
if !IsParameterNodeError(err) {
return false, err
}
}
res = res || rv

View file

@ -657,13 +657,13 @@ var orRuleTests = []struct {
},
// failures
{
"invalid rule",
"missing parameter node",
OrRule{
{Match: &MatchRule{"value", "", "", "z", Argument{"header", "a", "", false}, ""}},
},
map[string]interface{}{"Y": "Z"}, nil, nil,
[]byte{},
false, true,
false, false,
},
}