From ec0d23a92ffea972447d100fa07e059118be8caf Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Thu, 20 Sep 2018 16:51:08 +0200 Subject: [PATCH] tty: close epollConsole on errors make sure epollConsole is closed before returning an error. It solves a hang when using these commands with a container that uses a terminal: runc run foo & ssh root@localhost runc exec foo echo hello Signed-off-by: Giuseppe Scrivano --- tty.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tty.go b/tty.go index c8d01ebe3..51ba75341 100644 --- a/tty.go +++ b/tty.go @@ -97,9 +97,11 @@ func (t *tty) recvtty(process *libcontainer.Process, socket *os.File) error { // set raw mode to stdin and also handle interrupt stdin, err := console.ConsoleFromFile(os.Stdin) if err != nil { + epollConsole.Close() return err } if err := stdin.SetRaw(); err != nil { + epollConsole.Close() return fmt.Errorf("failed to set the terminal from the stdin: %v", err) } go handleInterrupt(stdin)