return an error for multiple use of some plugins (#1559)

* plugins: Return error for multiple use of some

Return plugin.ErrOnce when a plugin that doesn't support it, is called
mutliple times.

This now adds it for: cache, dnssec, errors, forward, hosts, nsid.
And changes it slightly in kubernetes, pprof, reload, root.

* more tests
This commit is contained in:
Miek Gieben
2018-02-28 18:16:05 -08:00
committed by GitHub
parent 5faa9e7bc1
commit f697b33283
27 changed files with 150 additions and 95 deletions

View File

@@ -59,7 +59,14 @@ func dnssecParse(c *caddy.Controller) ([]string, []*DNSKEY, int, error) {
keys := []*DNSKEY{}
capacity := defaultCap
i := 0
for c.Next() {
if i > 0 {
return nil, nil, 0, plugin.ErrOnce
}
i++
// dnssec [zones...]
zones = make([]string, len(c.ServerBlockKeys))
copy(zones, c.ServerBlockKeys)
@@ -69,7 +76,8 @@ func dnssecParse(c *caddy.Controller) ([]string, []*DNSKEY, int, error) {
}
for c.NextBlock() {
switch c.Val() {
switch x := c.Val(); x {
case "key":
k, e := keyParse(c)
if e != nil {
@@ -86,6 +94,8 @@ func dnssecParse(c *caddy.Controller) ([]string, []*DNSKEY, int, error) {
return nil, nil, 0, err
}
capacity = cacheCap
default:
return nil, nil, 0, c.Errf("unknown property '%s'", x)
}
}