|
@@ -2392,10 +2392,23 @@ func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, in io.Rea
|
|
|
|
|
|
var receiveStdout chan error
|
|
|
|
|
|
+ var oldState *term.State
|
|
|
+
|
|
|
+ if in != nil && setRawTerminal && cli.isTerminal && os.Getenv("NORAW") == "" {
|
|
|
+ oldState, err = term.SetRawTerminal(cli.terminalFd)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ defer term.RestoreTerminal(cli.terminalFd, oldState)
|
|
|
+ }
|
|
|
+
|
|
|
if stdout != nil {
|
|
|
receiveStdout = utils.Go(func() (err error) {
|
|
|
defer func() {
|
|
|
if in != nil {
|
|
|
+ if setRawTerminal && cli.isTerminal {
|
|
|
+ term.RestoreTerminal(cli.terminalFd, oldState)
|
|
|
+ }
|
|
|
in.Close()
|
|
|
}
|
|
|
}()
|
|
@@ -2411,14 +2424,6 @@ func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, in io.Rea
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- if in != nil && setRawTerminal && cli.isTerminal && os.Getenv("NORAW") == "" {
|
|
|
- oldState, err := term.SetRawTerminal(cli.terminalFd)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- defer term.RestoreTerminal(cli.terminalFd, oldState)
|
|
|
- }
|
|
|
-
|
|
|
sendStdin := utils.Go(func() error {
|
|
|
if in != nil {
|
|
|
io.Copy(rwc, in)
|