diff --git a/lib/web/desktop.go b/lib/web/desktop.go index d475135fe9d77..60f062554688c 100644 --- a/lib/web/desktop.go +++ b/lib/web/desktop.go @@ -495,7 +495,7 @@ func proxyWebsocketConn(ws *websocket.Conn, wds net.Conn) error { go func() { defer closeOnce.Do(close) - buf := make([]byte, 4096) + var buf bytes.Buffer for { _, reader, err := ws.NextReader() switch { @@ -506,13 +506,13 @@ func proxyWebsocketConn(ws *websocket.Conn, wds net.Conn) error { errs <- err return } - n, err := reader.Read(buf) - if err != nil { + buf.Reset() + if _, err := io.Copy(&buf, reader); err != nil { errs <- err return } - if _, err := wds.Write(buf[:n]); err != nil { + if _, err := wds.Write(buf.Bytes()); err != nil { errs <- trace.Wrap(err, "sending TDP message to desktop agent") return }