mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 18:53:43 -04:00
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:
@@ -6,9 +6,12 @@
|
||||
|
||||
## Description
|
||||
|
||||
This plugin implements RFC 5001 and adds an EDNS0 OPT resource record to replies that uniquely
|
||||
identify the server. This is useful in anycast setups to see which server was responsible for
|
||||
generating the reply and for debugging.
|
||||
This plugin implements [RFC 5001](https://tools.ietf.org/html/rfc5001) and adds an EDNS0 OPT
|
||||
resource record to replies that uniquely identify the server. This is useful in anycast setups to
|
||||
see which server was responsible for generating the reply and for debugging.
|
||||
|
||||
This plugin can only be used once per Server Block.
|
||||
|
||||
|
||||
## Syntax
|
||||
|
||||
@@ -48,3 +51,7 @@ And now a client with NSID support will see an OPT record with the NSID option:
|
||||
;; QUESTION SECTION:
|
||||
;whoami.example.org. IN A
|
||||
~~~
|
||||
|
||||
## Also See
|
||||
|
||||
[RFC 5001](https://tools.ietf.org/html/rfc5001)
|
||||
|
||||
@@ -36,13 +36,16 @@ func nsidParse(c *caddy.Controller) (string, error) {
|
||||
if err != nil {
|
||||
nsid = "localhost"
|
||||
}
|
||||
i := 0
|
||||
for c.Next() {
|
||||
args := c.RemainingArgs()
|
||||
if len(args) == 0 {
|
||||
return nsid, nil
|
||||
if i > 0 {
|
||||
return nsid, plugin.ErrOnce
|
||||
}
|
||||
i++
|
||||
args := c.RemainingArgs()
|
||||
if len(args) > 0 {
|
||||
nsid = strings.Join(args, " ")
|
||||
}
|
||||
nsid = strings.Join(args, " ")
|
||||
return nsid, nil
|
||||
}
|
||||
return nsid, nil
|
||||
}
|
||||
|
||||
@@ -19,18 +19,12 @@ func TestSetupNsid(t *testing.T) {
|
||||
expectedData string
|
||||
expectedErrContent string // substring from the expected error. Empty for positive cases.
|
||||
}{
|
||||
{
|
||||
`nsid`, false, defaultNsid, "",
|
||||
},
|
||||
{
|
||||
`nsid "ps0"`, false, "ps0", "",
|
||||
},
|
||||
{
|
||||
`nsid "worker1"`, false, "worker1", "",
|
||||
},
|
||||
{
|
||||
`nsid "tf 2"`, false, "tf 2", "",
|
||||
},
|
||||
{`nsid`, false, defaultNsid, ""},
|
||||
{`nsid "ps0"`, false, "ps0", ""},
|
||||
{`nsid "worker1"`, false, "worker1", ""},
|
||||
{`nsid "tf 2"`, false, "tf 2", ""},
|
||||
{`nsid
|
||||
nsid`, true, "", "plugin"},
|
||||
}
|
||||
|
||||
for i, test := range tests {
|
||||
|
||||
Reference in New Issue
Block a user