mirror of
https://github.com/coredns/coredns.git
synced 2025-11-26 21:54:03 -05: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:
@@ -8,6 +8,8 @@
|
||||
|
||||
Any errors encountered during the query processing will be printed to standard output.
|
||||
|
||||
This plugin can only be used once per Server Block.
|
||||
|
||||
## Syntax
|
||||
|
||||
~~~
|
||||
|
||||
@@ -37,7 +37,13 @@ func setup(c *caddy.Controller) error {
|
||||
func errorsParse(c *caddy.Controller) (errorHandler, error) {
|
||||
handler := errorHandler{}
|
||||
|
||||
i := 0
|
||||
for c.Next() {
|
||||
if i > 0 {
|
||||
return handler, plugin.ErrOnce
|
||||
}
|
||||
i++
|
||||
|
||||
args := c.RemainingArgs()
|
||||
switch len(args) {
|
||||
case 0:
|
||||
|
||||
@@ -12,21 +12,14 @@ func TestErrorsParse(t *testing.T) {
|
||||
shouldErr bool
|
||||
expectedErrorHandler errorHandler
|
||||
}{
|
||||
{`errors`, false, errorHandler{
|
||||
LogFile: "stdout",
|
||||
}},
|
||||
{`errors stdout`, false, errorHandler{
|
||||
LogFile: "stdout",
|
||||
}},
|
||||
{`errors errors.txt`, true, errorHandler{
|
||||
LogFile: "",
|
||||
}},
|
||||
{`errors visible`, true, errorHandler{
|
||||
LogFile: "",
|
||||
}},
|
||||
{`errors { log visible }`, true, errorHandler{
|
||||
LogFile: "stdout",
|
||||
}},
|
||||
{`errors`, false, errorHandler{LogFile: "stdout"}},
|
||||
{`errors stdout`, false, errorHandler{LogFile: "stdout"}},
|
||||
{`errors errors.txt`, true, errorHandler{LogFile: ""}},
|
||||
{`errors visible`, true, errorHandler{LogFile: ""}},
|
||||
{`errors { log visible }`, true, errorHandler{LogFile: "stdout"}},
|
||||
{`errors
|
||||
errors `, true, errorHandler{LogFile: "stdout"}},
|
||||
{`errors a b`, true, errorHandler{LogFile: ""}},
|
||||
}
|
||||
for i, test := range tests {
|
||||
c := caddy.NewTestController("dns", test.inputErrorsRules)
|
||||
|
||||
Reference in New Issue
Block a user