diff --git a/proxy/shadowsocks/server.go b/proxy/shadowsocks/server.go index 58038de9d..a5db27326 100644 --- a/proxy/shadowsocks/server.go +++ b/proxy/shadowsocks/server.go @@ -187,8 +187,14 @@ func (v *Server) handleConnection(conn internet.Connection) { if err != nil { return err } - responseWriter.Write(payload) - bufferedWriter.SetBuffered(false) + if err := responseWriter.Write(payload); err != nil { + return err + } + payload.Release() + + if err := bufferedWriter.SetBuffered(false); err != nil { + return err + } if err := buf.PipeUntilEOF(ray.InboundOutput(), responseWriter); err != nil { log.Info("Shadowsocks|Server: Failed to transport all TCP response: ", err)