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