diff options
Diffstat (limited to 'plugin/pkg/nonwriter/nonwriter.go')
-rw-r--r-- | plugin/pkg/nonwriter/nonwriter.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/plugin/pkg/nonwriter/nonwriter.go b/plugin/pkg/nonwriter/nonwriter.go new file mode 100644 index 000000000..7819a320f --- /dev/null +++ b/plugin/pkg/nonwriter/nonwriter.go @@ -0,0 +1,23 @@ +// Package nonwriter implements a dns.ResponseWriter that never writes, but captures the dns.Msg being written. +package nonwriter + +import ( + "github.com/miekg/dns" +) + +// Writer is a type of ResponseWriter that captures the message, but never writes to the client. +type Writer struct { + dns.ResponseWriter + Msg *dns.Msg +} + +// New makes and returns a new NonWriter. +func New(w dns.ResponseWriter) *Writer { return &Writer{ResponseWriter: w} } + +// WriteMsg records the message, but doesn't write it itself. +func (w *Writer) WriteMsg(res *dns.Msg) error { + w.Msg = res + return nil +} + +func (w *Writer) Write(buf []byte) (int, error) { return len(buf), nil } |