From 3b6a2bc56ece70098b80a408c83535e388b5c942 Mon Sep 17 00:00:00 2001 From: Toby Date: Wed, 21 Apr 2021 17:08:01 -0700 Subject: [PATCH] Use correct address for packets from localRelayConn --- pkg/socks5/server.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/socks5/server.go b/pkg/socks5/server.go index 99771a4..6b8925f 100644 --- a/pkg/socks5/server.go +++ b/pkg/socks5/server.go @@ -327,10 +327,13 @@ func (s *Server) udpServer(clientConn *net.UDPConn, localRelayConn *net.UDPConn, go func() { buf := make([]byte, udpBufferSize) for { - n, _, err := localRelayConn.ReadFrom(buf) + n, from, err := localRelayConn.ReadFrom(buf) if n > 0 { - d := socks5.NewDatagram(socks5.ATYPIPv4, - []byte{0x00, 0x00, 0x00, 0x00}, []byte{0x00, 0x00}, buf[:n]) + atyp, addr, port, err := socks5.ParseAddress(from.String()) + if err != nil { + continue + } + d := socks5.NewDatagram(atyp, addr, port, buf[:n]) _, _ = clientConn.WriteToUDP(d.Bytes(), clientAddr) } if err != nil {