Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 035ad33

Browse files
fix: initialize pseudo console with default size for SSH sessions [2.27] (#20490)
> Resolved an invalid parameter error (-2147024809) during PTY creation on Windows 11 22H2 (but not only) when connecting via JetBrains Toolbox which spawns the native SSH client with `-tt` forcing PTY allocation even though there is no "terminal" on the client side to query its size. > > CreatePseudoConsole doesn't accept a 0x0 (zero width and zero height) console size and unfortunately, there is NO explicit documentation in the official Microsoft documentation that states the minimum valid values or explicitly prohibits 0x0. > > Looking at real-world implementations in the search results, all examples use reasonable non-zero values. > > I tested this with a local Windows VM registered to dev.coder.com i.e. externally managed workspace. Relates to #20468 Co-authored-by: Faur Ioan-Aurel <[email protected]>
1 parent 230b55b commit 035ad33

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

pty/pty_windows.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,19 @@ func newPty(opt ...Option) (*ptyWindows, error) {
5454
return nil, err
5555
}
5656

57-
consoleSize := uintptr(80) + (uintptr(80) << 16)
57+
// Default dimensions
58+
width, height := 80, 80
5859
if opts.sshReq != nil {
59-
consoleSize = uintptr(opts.sshReq.Window.Width) + (uintptr(opts.sshReq.Window.Height) << 16)
60+
if w := opts.sshReq.Window.Width; w > 0 && w <= 65535 {
61+
width = w
62+
}
63+
if h := opts.sshReq.Window.Height; h > 0 && h <= 65535 {
64+
height = h
65+
}
6066
}
67+
68+
consoleSize := uintptr(width) + (uintptr(height) << 16)
69+
6170
ret, _, err := procCreatePseudoConsole.Call(
6271
consoleSize,
6372
uintptr(pty.inputRead.Fd()),

0 commit comments

Comments
 (0)