From 3dc85a32fc2c7216f18374bccd37eaed7ed2db7f Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Sat, 3 Dec 2022 13:50:45 +0000 Subject: [PATCH] net: report completed when context is done in cgoLookupIP and cgoLookupPTR All the Lookup* methods that resolve hostnames eventually call lookupIP or lookupHost method. When the order is selected to be hostLookupCGO then lookupHost calls cgoLookupHost which internally calls cgoLookupIP (the lookupIP directly calls cgoLookupIP). When we provide a context that is cancelled after cgo call, then the cgoLookupIP returns completed == false, which caues the lookupIP/lookupHost to fallback to the go resolver. This fallback is unnecessary because our context is already cancelled. The same thing can happen to LookupAddr. Change-Id: Ifff7716c461f05d954ef43b5205865103558b410 GitHub-Last-Rev: 2ef2023e8c51cdd251986f79e94aba86a0722230 GitHub-Pull-Request: golang/go#57042 Reviewed-on: https://go-review.googlesource.com/c/go/+/454696 TryBot-Result: Gopher Robot Run-TryBot: Ian Lance Taylor Run-TryBot: Ian Lance Taylor Auto-Submit: Ian Lance Taylor Reviewed-by: Damien Neil Reviewed-by: Ian Lance Taylor --- src/net/cgo_unix.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net/cgo_unix.go b/src/net/cgo_unix.go index 6a2c369c66..38bf20cbb1 100644 --- a/src/net/cgo_unix.go +++ b/src/net/cgo_unix.go @@ -222,7 +222,7 @@ func cgoLookupIP(ctx context.Context, network, name string) (addrs []IPAddr, err case r := <-result: return r.addrs, r.err, true case <-ctx.Done(): - return nil, mapErr(ctx.Err()), false + return nil, mapErr(ctx.Err()), true } } @@ -262,7 +262,7 @@ func cgoLookupPTR(ctx context.Context, addr string) (names []string, err error, case r := <-result: return r.names, r.err, true case <-ctx.Done(): - return nil, mapErr(ctx.Err()), false + return nil, mapErr(ctx.Err()), true } } -- 2.48.1