2017-09-14 09:36:06 +01:00
|
|
|
// Package errors implements an HTTP error handling plugin.
|
2016-03-18 20:57:35 +00:00
|
|
|
package errors
|
|
|
|
|
|
|
|
|
|
import (
|
2018-04-22 08:34:35 +01:00
|
|
|
"context"
|
2016-03-18 20:57:35 +00:00
|
|
|
|
2017-09-14 09:36:06 +01:00
|
|
|
"github.com/coredns/coredns/plugin"
|
2018-05-10 03:04:46 +01:00
|
|
|
clog "github.com/coredns/coredns/plugin/pkg/log"
|
2017-02-21 22:51:47 -08:00
|
|
|
"github.com/coredns/coredns/request"
|
2016-04-11 07:56:38 +01:00
|
|
|
|
2016-03-18 20:57:35 +00:00
|
|
|
"github.com/miekg/dns"
|
|
|
|
|
)
|
|
|
|
|
|
2017-09-14 09:36:06 +01:00
|
|
|
// errorHandler handles DNS errors (and errors from other plugin).
|
2018-05-10 03:04:46 +01:00
|
|
|
type errorHandler struct{ Next plugin.Handler }
|
2016-03-18 20:57:35 +00:00
|
|
|
|
2017-09-14 09:36:06 +01:00
|
|
|
// ServeDNS implements the plugin.Handler interface.
|
2016-09-23 09:14:12 +01:00
|
|
|
func (h errorHandler) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
|
2017-09-14 09:36:06 +01:00
|
|
|
rcode, err := plugin.NextOrFailure(h.Name(), h.Next, ctx, w, r)
|
2016-03-18 20:57:35 +00:00
|
|
|
|
|
|
|
|
if err != nil {
|
2016-09-07 11:10:16 +01:00
|
|
|
state := request.Request{W: w, Req: r}
|
2018-05-10 03:04:46 +01:00
|
|
|
clog.Errorf("%d %s %s: %v", rcode, state.Name(), state.Type(), err)
|
2016-03-18 20:57:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return rcode, err
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-26 10:01:52 +01:00
|
|
|
func (h errorHandler) Name() string { return "errors" }
|