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)