From 4559e269e0860c954d1d39d2e99b35a7b86763f2 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Tue, 27 Dec 2022 19:49:34 -0500 Subject: [PATCH] race --- server.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/server.go b/server.go index 0af83cf..e9c6eb8 100644 --- a/server.go +++ b/server.go @@ -10,17 +10,19 @@ import ( "net" "net/http" "strings" + "sync" "time" "golang.org/x/time/rate" ) type Server struct { - Transport http.RoundTripper - resolver *net.Resolver - limiter *rate.Limiter - Timeout time.Duration - dnsCache map[string]dns + Transport http.RoundTripper + resolver *net.Resolver + limiter *rate.Limiter + Timeout time.Duration + dnsCacheLock sync.Mutex + dnsCache map[string]dns } type dns struct { @@ -154,6 +156,8 @@ func (s *Server) dig(ctx context.Context, host string) (string, error) { search := host search = strings.TrimPrefix(search, "https://") search = strings.TrimPrefix(search, "http://") + s.dnsCacheLock.Lock() + defer s.dnsCacheLock.Unlock() if v, ok := s.dnsCache[host]; ok && v.ok() { return v.result, v.err }