diff --git a/app/dns/dohdns.go b/app/dns/dohdns.go index 3f4f7dcd..257023ff 100644 --- a/app/dns/dohdns.go +++ b/app/dns/dohdns.go @@ -14,8 +14,6 @@ import ( "sync/atomic" "time" - dns_feature "v2ray.com/core/features/dns" - "golang.org/x/net/dns/dnsmessage" "v2ray.com/core/common" "v2ray.com/core/common/net" @@ -23,6 +21,7 @@ import ( "v2ray.com/core/common/session" "v2ray.com/core/common/signal/pubsub" "v2ray.com/core/common/task" + dns_feature "v2ray.com/core/features/dns" "v2ray.com/core/features/routing" "v2ray.com/core/transport/internet" ) @@ -221,13 +220,11 @@ func (s *DoHNameServer) sendQuery(ctx context.Context, domain string, option IPO if d, ok := ctx.Deadline(); ok { deadline = d } else { - deadline = time.Now().Add(time.Second * 8) + deadline = time.Now().Add(time.Second * 5) } for _, req := range reqs { - go func(r *dnsRequest) { - // generate new context for each req, using same context // may cause reqs all aborted if any one encounter an error dnsCtx := context.Background() @@ -245,7 +242,8 @@ func (s *DoHNameServer) sendQuery(ctx context.Context, domain string, option IPO // forced to use mux for DOH dnsCtx = session.ContextWithMuxPrefered(dnsCtx, true) - dnsCtx, cancel := context.WithDeadline(dnsCtx, deadline) + var cancel context.CancelFunc + dnsCtx, cancel = context.WithDeadline(dnsCtx, deadline) defer cancel() b, err := dns.PackMessage(r.msg) @@ -269,7 +267,6 @@ func (s *DoHNameServer) sendQuery(ctx context.Context, domain string, option IPO } func (s *DoHNameServer) dohHTTPSContext(ctx context.Context, b []byte) ([]byte, error) { - body := bytes.NewBuffer(b) req, err := http.NewRequest("POST", s.dohURL, body) if err != nil {