New plugin: loop (#1989)

* New plugin: loop

Add a plugin that detects loops. It does this by sending an unique query
to our selves. If we see the query more than twice we stop the process.
If there isn't a loop, the plugin disables it self and becomes a noop
plugin.

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben
2018-07-20 19:45:17 +01:00
committed by GitHub
parent 547f155465
commit 84ec780ffc
12 changed files with 272 additions and 0 deletions

19
plugin/loop/setup_test.go Normal file
View File

@@ -0,0 +1,19 @@
package loop
import (
"testing"
"github.com/mholt/caddy"
)
func TestSetup(t *testing.T) {
c := caddy.NewTestController("dns", `loop`)
if err := setup(c); err != nil {
t.Fatalf("Expected no errors, but got: %v", err)
}
c = caddy.NewTestController("dns", `loop argument`)
if err := setup(c); err == nil {
t.Fatal("Expected errors, but got none")
}
}