mirror of
https://github.com/cmz0228/hysteria-dev.git
synced 2025-09-19 14:36:02 +00:00
Merge branch 'master' into wip-udp-relay
This commit is contained in:
@@ -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)
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user