aboutsummaryrefslogtreecommitdiff
path: root/middleware/loadbalance/loadbalance.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/loadbalance/loadbalance.go')
-rw-r--r--middleware/loadbalance/loadbalance.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/middleware/loadbalance/loadbalance.go b/middleware/loadbalance/loadbalance.go
index 1d0d7a848..57f1f9174 100644
--- a/middleware/loadbalance/loadbalance.go
+++ b/middleware/loadbalance/loadbalance.go
@@ -6,14 +6,12 @@ import (
"github.com/miekg/dns"
)
+// RoundRobinResponseWriter is a response writer that shuffles A and AAAA records.
type RoundRobinResponseWriter struct {
dns.ResponseWriter
}
-func NewRoundRobinResponseWriter(w dns.ResponseWriter) *RoundRobinResponseWriter {
- return &RoundRobinResponseWriter{w}
-}
-
+// WriteMsg implements the dns.ResponseWriter interface.
func (r *RoundRobinResponseWriter) WriteMsg(res *dns.Msg) error {
if res.Rcode != dns.RcodeSuccess {
return r.ResponseWriter.WriteMsg(res)
@@ -63,13 +61,15 @@ func roundRobin(in []dns.RR) []dns.RR {
return out
}
-// Should we pack and unpack here to fiddle with the packet... Not likely.
+// Write implements the dns.ResponseWriter interface.
func (r *RoundRobinResponseWriter) Write(buf []byte) (int, error) {
+ // Should we pack and unpack here to fiddle with the packet... Not likely.
log.Printf("[WARNING] RoundRobin called with Write: no shuffling records")
n, err := r.ResponseWriter.Write(buf)
return n, err
}
+// Hijack implements the dns.ResponseWriter interface.
func (r *RoundRobinResponseWriter) Hijack() {
r.ResponseWriter.Hijack()
return