From a34c1935788623b3cea825efaa48bab2d6beb0eb Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 19 Aug 2019 16:25:44 +0800 Subject: [PATCH] dns query with timeout --- component/fakedns/middleware.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/component/fakedns/middleware.go b/component/fakedns/middleware.go index 7cd23bd..585595d 100644 --- a/component/fakedns/middleware.go +++ b/component/fakedns/middleware.go @@ -1,8 +1,10 @@ package fakedns import ( + "context" "net" "strings" + "time" D "github.com/miekg/dns" @@ -25,7 +27,8 @@ func dnsExchange(backendDNS []string, r *D.Msg) (msg *D.Msg) { c := new(D.Client) c.Net = "tcp" for _, dns := range backendDNS { - msg, _, _ = c.Exchange(r, dns) + ctx, _ := context.WithTimeout(context.Background(), time.Second) + msg, _, _ = c.ExchangeContext(ctx, r, dns) if msg != nil { // success, exit query. break