aboutsummaryrefslogtreecommitdiff
path: root/middleware/federation/nonwriter.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/federation/nonwriter.go')
-rw-r--r--middleware/federation/nonwriter.go22
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 }