Refine uot

This commit is contained in:
世界 2022-06-01 10:08:35 +08:00
parent 1cb90977f9
commit 61db298e6a
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
3 changed files with 9 additions and 24 deletions

View file

@ -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
}
}

View file

@ -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)

View file

@ -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)