From 9c3f2f600af1a399d285571ee14edc608cb9546b Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Sat, 4 Apr 2020 18:00:31 +0800 Subject: [PATCH] socks5: fix #148 --- proxy/http/server.go | 12 +++++++----- proxy/mixed/mixed.go | 1 - proxy/socks5/socks5.go | 13 ++++--------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/proxy/http/server.go b/proxy/http/server.go index dccd7c7..1316da9 100644 --- a/proxy/http/server.go +++ b/proxy/http/server.go @@ -46,12 +46,14 @@ func (s *HTTP) Serve(cc net.Conn) { defer cc.Close() var c *conn.Conn - switch ccc := cc.(type) { - case *net.TCPConn: - ccc.SetKeepAlive(true) - c = conn.NewConn(ccc) + switch cc := cc.(type) { case *conn.Conn: - c = ccc + c = cc + case *net.TCPConn: + cc.SetKeepAlive(true) + c = conn.NewConn(cc) + default: + c = conn.NewConn(cc) } req, err := parseRequest(c.Reader()) diff --git a/proxy/mixed/mixed.go b/proxy/mixed/mixed.go index e59e554..54f7a04 100644 --- a/proxy/mixed/mixed.go +++ b/proxy/mixed/mixed.go @@ -88,7 +88,6 @@ func (m *Mixed) Serve(c net.Conn) { } cc := conn.NewConn(c) - head, err := cc.Peek(1) if err != nil { // log.F("[mixed] socks5 peek error: %s", err) diff --git a/proxy/socks5/socks5.go b/proxy/socks5/socks5.go index c6f0165..5e754e0 100644 --- a/proxy/socks5/socks5.go +++ b/proxy/socks5/socks5.go @@ -103,16 +103,11 @@ func (s *Socks5) ListenAndServeTCP() { } // Serve serves a connection. -func (s *Socks5) Serve(cc net.Conn) { - defer cc.Close() +func (s *Socks5) Serve(c net.Conn) { + defer c.Close() - var c *conn.Conn - switch ccc := cc.(type) { - case *net.TCPConn: - ccc.SetKeepAlive(true) - c = conn.NewConn(ccc) - case *conn.Conn: - c = ccc + if c, ok := c.(*net.TCPConn); ok { + c.SetKeepAlive(true) } tgt, err := s.handshake(c)