mirror of
https://github.com/coredns/coredns.git
synced 2025-11-02 02:03:13 -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:
@@ -16,6 +16,8 @@ For more information, please see [Go's pprof
|
||||
documentation](https://golang.org/pkg/net/http/pprof/) and read
|
||||
[Profiling Go Programs](https://blog.golang.org/profiling-go-programs).
|
||||
|
||||
This plugin can only be used once per Server Block.
|
||||
|
||||
## Syntax
|
||||
|
||||
~~~
|
||||
|
||||
@@ -19,12 +19,15 @@ func init() {
|
||||
}
|
||||
|
||||
func setup(c *caddy.Controller) error {
|
||||
found := false
|
||||
h := &handler{addr: defaultAddr}
|
||||
|
||||
i := 0
|
||||
for c.Next() {
|
||||
if found {
|
||||
return plugin.Error("pprof", c.Err("pprof can only be specified once"))
|
||||
if i > 0 {
|
||||
return plugin.Error("pprof", plugin.ErrOnce)
|
||||
}
|
||||
i++
|
||||
|
||||
args := c.RemainingArgs()
|
||||
if len(args) == 1 {
|
||||
h.addr = args[0]
|
||||
@@ -39,7 +42,6 @@ func setup(c *caddy.Controller) error {
|
||||
if c.NextBlock() {
|
||||
return plugin.Error("pprof", c.ArgErr())
|
||||
}
|
||||
found = true
|
||||
}
|
||||
|
||||
pprofOnce.Do(func() {
|
||||
|
||||
Reference in New Issue
Block a user