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
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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")
}
}