diff --git a/api/http/handler/websocket/stream.go b/api/http/handler/websocket/stream.go index c3e8a5835..77ce78566 100644 --- a/api/http/handler/websocket/stream.go +++ b/api/http/handler/websocket/stream.go @@ -31,14 +31,14 @@ func streamFromReaderToWebsocket(websocketConn *websocket.Conn, reader io.Reader out := make([]byte, readerBufferSize) for { - _, err := reader.Read(out) + n, err := reader.Read(out) if err != nil { errorChan <- err break } - processedOutput := validString(string(out)) + processedOutput := validString(string(out[:n])) err = websocketConn.WriteMessage(websocket.TextMessage, []byte(processedOutput)) if err != nil { errorChan <- err @@ -49,22 +49,22 @@ func streamFromReaderToWebsocket(websocketConn *websocket.Conn, reader io.Reader } func validString(s string) string { - if !utf8.ValidString(s) { - v := make([]rune, 0, len(s)) - - for i, r := range s { - if r == utf8.RuneError { - _, size := utf8.DecodeRuneInString(s[i:]) - if size == 1 { - continue - } - } + if utf8.ValidString(s) { + return s + } - v = append(v, r) + v := make([]rune, 0, len(s)) + + for i, r := range s { + if r == utf8.RuneError { + _, size := utf8.DecodeRuneInString(s[i:]) + if size == 1 { + continue + } } - s = string(v) + v = append(v, r) } - return s + return string(v) }