Browse Source

optimize socks udp.go

pull/15/head
Jason 5 years ago
parent
commit
6f1d8bbdb3
  1. 9
      proxy/socks/udp.go

9
proxy/socks/udp.go

@ -13,6 +13,7 @@ import (
"github.com/xjasonlyu/tun2socks/common/dns"
"github.com/xjasonlyu/tun2socks/common/log"
"github.com/xjasonlyu/tun2socks/common/lsof"
"github.com/xjasonlyu/tun2socks/common/pool"
"github.com/xjasonlyu/tun2socks/common/stats"
"github.com/xjasonlyu/tun2socks/core"
)
@ -56,11 +57,11 @@ func (h *udpHandler) handleTCP(conn core.UDPConn, c net.Conn) {
}
func (h *udpHandler) fetchUDPInput(conn core.UDPConn, input net.PacketConn) {
buf := core.NewBytes(core.BufSize)
buf := pool.BufPool.Get().([]byte)
defer func() {
h.Close(conn)
core.FreeBytes(buf)
pool.BufPool.Put(buf[:cap(buf)])
}()
for {
@ -68,7 +69,7 @@ func (h *udpHandler) fetchUDPInput(conn core.UDPConn, input net.PacketConn) {
n, _, err := input.ReadFrom(buf)
if err != nil {
if err, ok := err.(net.Error); !ok && !err.Timeout() {
log.Warnf("read remote failed: %v", err)
log.Warnf("failed to read UDP data from remote: %v", err)
}
return
}
@ -85,7 +86,7 @@ func (h *udpHandler) fetchUDPInput(conn core.UDPConn, input net.PacketConn) {
}
if _, err := conn.WriteFrom(buf[int(3+len(addr)):n], resolvedAddr); err != nil {
log.Warnf("write local failed: %v", err)
log.Warnf("failed to write UDP data: %v", err)
return
}
}

Loading…
Cancel
Save