default term rows should be 24 (not 25), add min/max values as well

This commit is contained in:
sawka 2022-09-03 23:26:57 -07:00
parent 3936db0429
commit 39dacb988a
2 changed files with 21 additions and 13 deletions

View File

@ -269,3 +269,13 @@ func GetRemoteId() (string, error) {
return uuidStr, nil return uuidStr, nil
} }
} }
func BoundInt(ival int, minVal int, maxVal int) int {
if ival < minVal {
return minVal
}
if ival > maxVal {
return maxVal
}
return ival
}

View File

@ -30,10 +30,12 @@ import (
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
) )
const DefaultRows = 25 const DefaultTermRows = 24
const DefaultCols = 80 const DefaultTermCols = 80
const MaxRows = 1024 const MinTermRows = 2
const MaxCols = 1024 const MinTermCols = 10
const MaxTermRows = 1024
const MaxTermCols = 1024
const MaxFdNum = 1023 const MaxFdNum = 1023
const FirstExtraFilesFdNum = 3 const FirstExtraFilesFdNum = 3
const DefaultTermType = "xterm-256color" const DefaultTermType = "xterm-256color"
@ -319,15 +321,11 @@ func ValidateRunPacket(pk *packet.RunPacketType) error {
} }
func GetWinsize(p *packet.RunPacketType) *pty.Winsize { func GetWinsize(p *packet.RunPacketType) *pty.Winsize {
rows := DefaultRows rows := DefaultTermRows
cols := DefaultCols cols := DefaultTermCols
if p.TermOpts != nil { if p.TermOpts != nil {
if p.TermOpts.Rows > 0 && p.TermOpts.Rows <= MaxRows { rows = base.BoundInt(p.TermOpts.Rows, MinTermRows, MaxTermRows)
rows = p.TermOpts.Rows cols = base.BoundInt(p.TermOpts.Cols, MinTermCols, MaxTermCols)
}
if p.TermOpts.Cols > 0 && p.TermOpts.Cols <= MaxCols {
cols = p.TermOpts.Cols
}
} }
return &pty.Winsize{Rows: uint16(rows), Cols: uint16(cols)} return &pty.Winsize{Rows: uint16(rows), Cols: uint16(cols)}
} }
@ -1174,7 +1172,7 @@ func runSimpleCmdInPty(ecmd *exec.Cmd) ([]byte, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("opening new pty: %w", err) return nil, fmt.Errorf("opening new pty: %w", err)
} }
pty.Setsize(cmdPty, &pty.Winsize{Rows: DefaultRows, Cols: DefaultCols}) pty.Setsize(cmdPty, &pty.Winsize{Rows: DefaultTermRows, Cols: DefaultTermCols})
ecmd.Stdin = cmdTty ecmd.Stdin = cmdTty
ecmd.Stdout = cmdTty ecmd.Stdout = cmdTty
ecmd.Stderr = cmdTty ecmd.Stderr = cmdTty