diff --git a/cmd/shadowsocks-local/local.go b/cmd/shadowsocks-local/local.go index 604bf9f7..747113f8 100644 --- a/cmd/shadowsocks-local/local.go +++ b/cmd/shadowsocks-local/local.go @@ -310,7 +310,17 @@ func handleConnection(conn net.Conn) { return } + buf := make([]byte, 4096) + copy(buf, rawaddr) + ss.SetReadTimeout(conn) + if n, err = conn.Read(buf[len(rawaddr):cap(buf)]); err != nil { + return + } + rawaddr = buf[: n+len(rawaddr)] remote, err := createServerConn(rawaddr, addr) + buf = nil + rawaddr = nil + if err != nil { if len(servers.srvCipher) > 1 { log.Println("Failed connect to all available shadowsocks server")