mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2025-02-23 12:42:27 +08:00
fix: dns outbound udp timeout
This commit is contained in:
parent
bd703b8ff2
commit
de38fa882c
@ -89,14 +89,14 @@ func (d *dnsPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
|
|||||||
return len(p), nil
|
return len(p), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
buf := pool.Get(resolver.SafeDnsPacketSize)
|
buf := pool.Get(resolver.SafeDnsPacketSize)
|
||||||
put := func() { _ = pool.Put(buf) }
|
put := func() { _ = pool.Put(buf) }
|
||||||
copy(buf, p) // avoid p be changed after WriteTo returned
|
copy(buf, p) // avoid p be changed after WriteTo returned
|
||||||
|
|
||||||
go func() { // don't block the WriteTo function
|
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)
|
buf, err = resolver.RelayDnsPacket(ctx, buf[:len(p)], buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
put()
|
put()
|
||||||
|
Loading…
Reference in New Issue
Block a user