mirror of
https://github.com/SagerNet/sing.git
synced 2025-04-06 21:37:38 +03:00
Refine uot
This commit is contained in:
parent
1cb90977f9
commit
61db298e6a
3 changed files with 9 additions and 24 deletions
|
@ -1,21 +0,0 @@
|
|||
package uot
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"time"
|
||||
)
|
||||
|
||||
var LookupAddress func(domain string) (net.IP, error)
|
||||
|
||||
func init() {
|
||||
LookupAddress = func(domain string) (net.IP, error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
ips, err := net.DefaultResolver.LookupIP(ctx, "ip", domain)
|
||||
cancel()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ips[0], nil
|
||||
}
|
||||
}
|
|
@ -48,17 +48,18 @@ func (c *ServerConn) loopInput() {
|
|||
_buffer := buf.StackNew()
|
||||
defer common.KeepAlive(_buffer)
|
||||
buffer := common.Dup(_buffer)
|
||||
defer buffer.Release()
|
||||
for {
|
||||
destination, err := AddrParser.ReadAddrPort(c.inputReader)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
if destination.Family().IsFqdn() {
|
||||
ip, err := LookupAddress(destination.Fqdn)
|
||||
addr, err := net.ResolveUDPAddr("udp", destination.String())
|
||||
if err != nil {
|
||||
break
|
||||
continue
|
||||
}
|
||||
destination.Addr = M.AddrFromIP(ip)
|
||||
destination = M.SocksaddrFromNet(addr)
|
||||
}
|
||||
var length uint16
|
||||
err = binary.Read(c.inputReader, binary.BigEndian, &length)
|
||||
|
@ -82,6 +83,7 @@ func (c *ServerConn) loopOutput() {
|
|||
_buffer := buf.StackNew()
|
||||
defer common.KeepAlive(_buffer)
|
||||
buffer := common.Dup(_buffer)
|
||||
defer buffer.Release()
|
||||
for {
|
||||
buffer.FullReset()
|
||||
n, addr, err := buffer.ReadPacketFrom(c)
|
||||
|
|
|
@ -58,6 +58,7 @@ func (c *AssociateConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
|
|||
_buffer := buf.StackNew()
|
||||
defer common.KeepAlive(_buffer)
|
||||
buffer := common.Dup(_buffer)
|
||||
defer buffer.Release()
|
||||
common.Must(buffer.WriteZeroN(3))
|
||||
err = M.SocksaddrSerializer.WriteAddrPort(buffer, M.SocksaddrFromNet(addr))
|
||||
if err != nil {
|
||||
|
@ -81,6 +82,7 @@ func (c *AssociateConn) Write(b []byte) (n int, err error) {
|
|||
_buffer := buf.StackNew()
|
||||
defer common.KeepAlive(_buffer)
|
||||
buffer := common.Dup(_buffer)
|
||||
defer buffer.Release()
|
||||
common.Must(buffer.WriteZeroN(3))
|
||||
err = M.SocksaddrSerializer.WriteAddrPort(buffer, c.dest)
|
||||
if err != nil {
|
||||
|
@ -150,6 +152,7 @@ func (c *AssociatePacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error
|
|||
_buffer := buf.StackNew()
|
||||
defer common.KeepAlive(_buffer)
|
||||
buffer := common.Dup(_buffer)
|
||||
defer buffer.Release()
|
||||
common.Must(buffer.WriteZeroN(3))
|
||||
|
||||
err = M.SocksaddrSerializer.WriteAddrPort(buffer, M.SocksaddrFromNet(addr))
|
||||
|
@ -173,6 +176,7 @@ func (c *AssociatePacketConn) Write(b []byte) (n int, err error) {
|
|||
_buffer := buf.StackNew()
|
||||
defer common.KeepAlive(_buffer)
|
||||
buffer := common.Dup(_buffer)
|
||||
defer buffer.Release()
|
||||
common.Must(buffer.WriteZeroN(3))
|
||||
|
||||
err = M.SocksaddrSerializer.WriteAddrPort(buffer, c.dest)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue