socks5: fix #148

This commit is contained in:
nadoo 2020-04-04 18:00:31 +08:00
parent fda05d5d3d
commit 9c3f2f600a
3 changed files with 11 additions and 15 deletions

View File

@ -46,12 +46,14 @@ func (s *HTTP) Serve(cc net.Conn) {
defer cc.Close() defer cc.Close()
var c *conn.Conn var c *conn.Conn
switch ccc := cc.(type) { switch cc := cc.(type) {
case *net.TCPConn:
ccc.SetKeepAlive(true)
c = conn.NewConn(ccc)
case *conn.Conn: 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()) req, err := parseRequest(c.Reader())

View File

@ -88,7 +88,6 @@ func (m *Mixed) Serve(c net.Conn) {
} }
cc := conn.NewConn(c) cc := conn.NewConn(c)
head, err := cc.Peek(1) head, err := cc.Peek(1)
if err != nil { if err != nil {
// log.F("[mixed] socks5 peek error: %s", err) // log.F("[mixed] socks5 peek error: %s", err)

View File

@ -103,16 +103,11 @@ func (s *Socks5) ListenAndServeTCP() {
} }
// Serve serves a connection. // Serve serves a connection.
func (s *Socks5) Serve(cc net.Conn) { func (s *Socks5) Serve(c net.Conn) {
defer cc.Close() defer c.Close()
var c *conn.Conn if c, ok := c.(*net.TCPConn); ok {
switch ccc := cc.(type) { c.SetKeepAlive(true)
case *net.TCPConn:
ccc.SetKeepAlive(true)
c = conn.NewConn(ccc)
case *conn.Conn:
c = ccc
} }
tgt, err := s.handshake(c) tgt, err := s.handshake(c)