File tree Expand file tree Collapse file tree 1 file changed +15
-9
lines changed Expand file tree Collapse file tree 1 file changed +15
-9
lines changed Original file line number Diff line number Diff line change 1
1
package kvm
2
2
3
3
import (
4
+ "bytes"
4
5
"encoding/json"
5
6
"io"
6
7
"os"
@@ -55,18 +56,23 @@ func handleTerminalChannel(d *webrtc.DataChannel) {
55
56
return
56
57
}
57
58
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 )
65
64
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
+ }
67
73
}
74
+ scopedLogger .Warn ().Err (err ).Msg ("Failed to parse terminal size" )
68
75
}
69
- scopedLogger .Warn ().Err (err ).Msg ("Failed to parse terminal size" )
70
76
}
71
77
_ , err := ptmx .Write (msg .Data )
72
78
if err != nil {
You can’t perform that action at this time.
0 commit comments