mirror of
https://github.com/coredns/coredns.git
synced 2025-10-28 08:44:17 -04:00
plugin/loop: show from -> to (#2400)
Show from and to address when detecting a loop they may aid in
debugging.
Hard to create a unit test, but this is a startup run with self induced
loop:
~~~ corefile
.:1053 {
loop
log
forward . 127.0.0.1:1053
}
~~~~
~~~
:1053
2018-12-16T10:11:03.695Z [INFO] CoreDNS-1.3.0
2018-12-16T10:11:03.695Z [INFO] linux/amd64, go1.11,
CoreDNS-1.3.0
linux/amd64, go1.11,
2018-12-16T10:11:03.696Z [FATAL] plugin/loop: Loop (127.0.0.1:51384 -> :1053) detected for zone ".", see https://coredns.io/plugins/loop#troubleshooting. Query: "HINFO 2781022615773629442.4133547885299871809."
~~~
Update the docs and polished that a bit as well.
Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
@@ -19,6 +19,7 @@ type Loop struct {
|
||||
|
||||
zone string
|
||||
qname string
|
||||
addr string
|
||||
|
||||
sync.RWMutex
|
||||
i int
|
||||
@@ -49,7 +50,7 @@ func (l *Loop) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (
|
||||
}
|
||||
|
||||
if l.seen() > 2 {
|
||||
log.Fatalf("Forwarding loop detected in \"%s\" zone. Exiting. See https://coredns.io/plugins/loop#troubleshooting. Probe query: \"HINFO %s\".", l.zone, l.qname)
|
||||
log.Fatalf(`Loop (%s -> %s) detected for zone %q, see https://coredns.io/plugins/loop#troubleshooting. Query: "HINFO %s"`, state.RemoteAddr(), l.address(), l.zone, l.qname)
|
||||
}
|
||||
|
||||
return plugin.NextOrFailure(l.Name(), l.Next, ctx, w, r)
|
||||
@@ -94,3 +95,15 @@ func (l *Loop) disabled() bool {
|
||||
defer l.RUnlock()
|
||||
return l.off
|
||||
}
|
||||
|
||||
func (l *Loop) setAddress(addr string) {
|
||||
l.Lock()
|
||||
defer l.Unlock()
|
||||
l.addr = addr
|
||||
}
|
||||
|
||||
func (l *Loop) address() string {
|
||||
l.RLock()
|
||||
defer l.RUnlock()
|
||||
return l.addr
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user