- compliance with metadata contract. If metadata value is empty, ignore rewrite - like if metadata does not exist. (#1953)

This commit is contained in:
Francois Tur
2018-07-08 17:38:46 -04:00
committed by Paul Greenberg
parent 7745462430
commit b3a92f1622
2 changed files with 6 additions and 3 deletions

View File

@@ -203,7 +203,10 @@ func (rule *edns0VariableRule) ruleData(ctx context.Context, state request.Reque
fetcher := metadata.ValueFunc(ctx, rule.variable[1:len(rule.variable)-1])
if fetcher != nil {
return []byte(fetcher()), nil
value := fetcher()
if len(value) > 0 {
return []byte(value), nil
}
}
return nil, fmt.Errorf("unable to extract data for variable %s", rule.variable)

View File

@@ -523,8 +523,8 @@ func TestRewriteEDNS0LocalVariable(t *testing.T) {
{
[]dns.EDNS0{},
[]string{"local", "set", "0xffee", "{test/empty}"},
[]dns.EDNS0{&dns.EDNS0_LOCAL{Code: 0xffee, Data: []byte("")}},
true,
nil,
false,
},
{
[]dns.EDNS0{},