From 71e1f4b66a1b10b2b5ff1d855120f33db046243d Mon Sep 17 00:00:00 2001 From: Vladislav Yarmak Date: Tue, 23 Sep 2025 23:19:28 +0300 Subject: [PATCH] fast resolver: cancel queries lost race --- resolver/fast.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resolver/fast.go b/resolver/fast.go index eadb01b..dc6a0bb 100644 --- a/resolver/fast.go +++ b/resolver/fast.go @@ -35,8 +35,8 @@ func NewFastResolver(resolvers ...LookupNetIPer) *FastResolver { } func (r FastResolver) LookupNetIP(ctx context.Context, network, host string) ([]netip.Addr, error) { - masterNotInterested := make(chan struct{}) - defer close(masterNotInterested) + ctx, cl := context.WithCancel(ctx) + defer cl() errors := make(chan error) success := make(chan []netip.Addr) for _, res := range r.upstreams { @@ -45,12 +45,12 @@ func (r FastResolver) LookupNetIP(ctx context.Context, network, host string) ([] if err == nil { select { case success <- addrs: - case <-masterNotInterested: + case <-ctx.Done(): } } else { select { - case errors <-err: - case <-masterNotInterested: + case errors <- err: + case <-ctx.Done(): } } }(res)