Merge branch 'master' into wip-udp-relay

This commit is contained in:
Toby
2021-04-21 21:54:28 -07:00
2 changed files with 10 additions and 7 deletions

View File

@@ -45,7 +45,7 @@ func (r *TCPRelay) ListenAndServe() error {
if err != nil { if err != nil {
return err return err
} }
go func(c *net.TCPConn) { go func() {
defer c.Close() defer c.Close()
r.ConnFunc(c.RemoteAddr()) r.ConnFunc(c.RemoteAddr())
rc, err := r.HyClient.DialTCP(r.Remote) rc, err := r.HyClient.DialTCP(r.Remote)
@@ -56,6 +56,6 @@ func (r *TCPRelay) ListenAndServe() error {
defer rc.Close() defer rc.Close()
err = utils.PipePairWithTimeout(c, rc, r.Timeout) err = utils.PipePairWithTimeout(c, rc, r.Timeout)
r.ErrorFunc(c.RemoteAddr(), err) r.ErrorFunc(c.RemoteAddr(), err)
}(c) }()
} }
} }

View File

@@ -124,7 +124,7 @@ func (s *Server) ListenAndServe() error {
if err != nil { if err != nil {
return err return err
} }
go func(c *net.TCPConn) { go func() {
defer c.Close() defer c.Close()
if s.TCPTimeout != 0 { if s.TCPTimeout != 0 {
if err := c.SetDeadline(time.Now().Add(s.TCPTimeout)); err != nil { if err := c.SetDeadline(time.Now().Add(s.TCPTimeout)); err != nil {
@@ -139,7 +139,7 @@ func (s *Server) ListenAndServe() error {
return return
} }
_ = s.handle(c, r) _ = s.handle(c, r)
}(c) }()
} }
} }
@@ -327,10 +327,13 @@ func (s *Server) udpServer(clientConn *net.UDPConn, localRelayConn *net.UDPConn,
go func() { go func() {
buf := make([]byte, udpBufferSize) buf := make([]byte, udpBufferSize)
for { for {
n, _, err := localRelayConn.ReadFrom(buf) n, from, err := localRelayConn.ReadFrom(buf)
if n > 0 { if n > 0 {
d := socks5.NewDatagram(socks5.ATYPIPv4, atyp, addr, port, err := socks5.ParseAddress(from.String())
[]byte{0x00, 0x00, 0x00, 0x00}, []byte{0x00, 0x00}, buf[:n]) if err != nil {
continue
}
d := socks5.NewDatagram(atyp, addr, port, buf[:n])
_, _ = clientConn.WriteToUDP(d.Bytes(), clientAddr) _, _ = clientConn.WriteToUDP(d.Bytes(), clientAddr)
} }
if err != nil { if err != nil {