From a657e1f6618ee94c46fa9374dd29c21345710d38 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Tue, 4 Jun 2019 23:21:59 -0700 Subject: [PATCH] be sure to close connection after completion of xfr out. (#2866) otherwise the connection and associated socket stay in the CLOSE_WAIT state unless/until golang runtime performs GC. --- plugin/file/xfr.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugin/file/xfr.go b/plugin/file/xfr.go index 18b6bb117..6be265b34 100644 --- a/plugin/file/xfr.go +++ b/plugin/file/xfr.go @@ -33,7 +33,10 @@ func (x Xfr) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (in ch := make(chan *dns.Envelope) defer close(ch) tr := new(dns.Transfer) - go tr.Out(w, r, ch) + go func() { + tr.Out(w, r, ch) + w.Close() + }() j, l := 0, 0 records = append(records, records[0]) // add closing SOA to the end @@ -51,7 +54,6 @@ func (x Xfr) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (in } w.Hijack() - // w.Close() // Client closes connection return dns.RcodeSuccess, nil }