Skip to content

Commit eaa5849

Browse files
authored
fix: Log spam when using a web terminal #547 (#550)
1 parent f4bb47c commit eaa5849

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

terminal.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package kvm
22

33
import (
4+
"bytes"
45
"encoding/json"
56
"io"
67
"os"
@@ -55,18 +56,23 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
5556
return
5657
}
5758
if msg.IsString {
58-
var size TerminalSize
59-
err := json.Unmarshal([]byte(msg.Data), &size)
60-
if err == nil {
61-
err = pty.Setsize(ptmx, &pty.Winsize{
62-
Rows: uint16(size.Rows),
63-
Cols: uint16(size.Cols),
64-
})
59+
maybeJson := bytes.TrimSpace(msg.Data)
60+
// Cheap check to see if this resembles JSON
61+
if len(maybeJson) > 1 && maybeJson[0] == '{' && maybeJson[len(maybeJson)-1] == '}' {
62+
var size TerminalSize
63+
err := json.Unmarshal(maybeJson, &size)
6564
if err == nil {
66-
return
65+
err = pty.Setsize(ptmx, &pty.Winsize{
66+
Rows: uint16(size.Rows),
67+
Cols: uint16(size.Cols),
68+
})
69+
if err == nil {
70+
scopedLogger.Info().Int("rows", size.Rows).Int("cols", size.Cols).Msg("Set terminal size")
71+
return
72+
}
6773
}
74+
scopedLogger.Warn().Err(err).Msg("Failed to parse terminal size")
6875
}
69-
scopedLogger.Warn().Err(err).Msg("Failed to parse terminal size")
7076
}
7177
_, err := ptmx.Write(msg.Data)
7278
if err != nil {

0 commit comments

Comments
 (0)