mirror of
https://github.com/coredns/coredns.git
synced 2025-10-30 01:34:21 -04:00
fix(transfer): goroutine leak on axfr err (#7516)
This commit is contained in:
@@ -134,6 +134,11 @@ func (t *Transfer) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Ms
|
||||
select {
|
||||
case ch <- &dns.Envelope{RR: rrs}:
|
||||
case err := <-errCh:
|
||||
// Client errored; drain pchan to avoid blocking the producer goroutine.
|
||||
go func() {
|
||||
for range pchan {
|
||||
}
|
||||
}()
|
||||
return dns.RcodeServerFailure, err
|
||||
}
|
||||
l += len(rrs)
|
||||
@@ -161,11 +166,7 @@ func (t *Transfer) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Ms
|
||||
}
|
||||
|
||||
if len(rrs) > 0 {
|
||||
select {
|
||||
case ch <- &dns.Envelope{RR: rrs}:
|
||||
case err := <-errCh:
|
||||
return dns.RcodeServerFailure, err
|
||||
}
|
||||
ch <- &dns.Envelope{RR: rrs}
|
||||
l += len(rrs)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user