From de38fa882c5f47347367bcae12ac7f502e0ba9d7 Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Tue, 9 Apr 2024 14:26:14 +0800 Subject: [PATCH] fix: dns outbound udp timeout --- adapter/outbound/dns.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/adapter/outbound/dns.go b/adapter/outbound/dns.go index 21a5b2b77..8686b288e 100644 --- a/adapter/outbound/dns.go +++ b/adapter/outbound/dns.go @@ -89,14 +89,14 @@ func (d *dnsPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) { return len(p), nil } - ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout) - defer cancel() - buf := pool.Get(resolver.SafeDnsPacketSize) put := func() { _ = pool.Put(buf) } copy(buf, p) // avoid p be changed after WriteTo returned go func() { // don't block the WriteTo function + ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout) + defer cancel() + buf, err = resolver.RelayDnsPacket(ctx, buf[:len(p)], buf) if err != nil { put()