From cfc47684a66ffe93bbee83e52a034b5dbb7f9e04 Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Tue, 20 Feb 2024 18:17:22 +0100 Subject: [PATCH] move acquireThread out of goroutine Change-Id: I0cdb08bf59c7b7a549e873da5f6f22b309daa0e9 --- src/net/cgo_unix.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/net/cgo_unix.go b/src/net/cgo_unix.go index a4455f45d4..35980d16c7 100644 --- a/src/net/cgo_unix.go +++ b/src/net/cgo_unix.go @@ -56,18 +56,17 @@ func doBlockingWithCtx[T any](ctx context.Context, lookupName string, blocking f err error } + if err := acquireThread(ctx); err != nil { + var zero T + return zero, &DNSError{ + Name: lookupName, + Err: mapErr(err).Error(), + IsTimeout: err == context.DeadlineExceeded, + } + } + res := make(chan result, 1) go func() { - if err := acquireThread(ctx); err != nil { - res <- result{ - err: &DNSError{ - Name: lookupName, - Err: mapErr(err).Error(), - IsTimeout: err == context.DeadlineExceeded, - }, - } - return - } defer releaseThread() var r result r.res, r.err = blocking()