diff --git a/pkg/blockcontroller/blockcontroller.go b/pkg/blockcontroller/blockcontroller.go index a686f6d68..a04f04509 100644 --- a/pkg/blockcontroller/blockcontroller.go +++ b/pkg/blockcontroller/blockcontroller.go @@ -346,8 +346,11 @@ func (bc *BlockController) DoRunShellCommand(rc *RunShellOpts, blockMeta map[str if err != nil { log.Printf("error setting term size: %v\n", err) } + err = bc.ShellProc.Cmd.SetSize(ic.TermSize.Rows, ic.TermSize.Cols) + if err != nil { + log.Printf("error setting remote SIGWINCH: %v\n", err) + } } - // TODO signals } }() go func() { diff --git a/pkg/shellexec/conninterface.go b/pkg/shellexec/conninterface.go index 178af27ee..1fcaa8fef 100644 --- a/pkg/shellexec/conninterface.go +++ b/pkg/shellexec/conninterface.go @@ -15,6 +15,7 @@ type ConnInterface interface { StdinPipe() (io.WriteCloser, error) StdoutPipe() (io.ReadCloser, error) StderrPipe() (io.ReadCloser, error) + SetSize(w int, h int) error } type CmdWrap struct { @@ -52,6 +53,10 @@ func (cw CmdWrap) StderrPipe() (io.ReadCloser, error) { return cw.Cmd.StderrPipe() } +func (cw CmdWrap) SetSize(w int, h int) error { + return nil +} + type SessionWrap struct { Session *ssh.Session StartCmd string @@ -90,3 +95,7 @@ func (sw SessionWrap) StderrPipe() (io.ReadCloser, error) { } return io.NopCloser(stderrReader), nil } + +func (sw SessionWrap) SetSize(h int, w int) error { + return sw.Session.WindowChange(h, w) +}