mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
stop proxy at one point
This commit is contained in:
parent
e0b59ab52b
commit
700a71e6b6
2 changed files with 19 additions and 4 deletions
12
commands.go
12
commands.go
|
@ -540,7 +540,7 @@ func (cli *DockerCli) CmdRestart(args ...string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (cli *DockerCli) forwardAllSignals(cid string) {
|
||||
func (cli *DockerCli) forwardAllSignals(cid string) chan os.Signal {
|
||||
sigc := make(chan os.Signal, 1)
|
||||
utils.CatchAll(sigc)
|
||||
go func() {
|
||||
|
@ -550,6 +550,7 @@ func (cli *DockerCli) forwardAllSignals(cid string) {
|
|||
}
|
||||
}
|
||||
}()
|
||||
return sigc
|
||||
}
|
||||
|
||||
func (cli *DockerCli) CmdStart(args ...string) error {
|
||||
|
@ -582,7 +583,8 @@ func (cli *DockerCli) CmdStart(args ...string) error {
|
|||
}
|
||||
|
||||
if !container.Config.Tty {
|
||||
cli.forwardAllSignals(cmd.Arg(0))
|
||||
sigc := cli.forwardAllSignals(cmd.Arg(0))
|
||||
defer utils.StopCatch(sigc)
|
||||
}
|
||||
|
||||
if container.Config.Tty && cli.isTerminal {
|
||||
|
@ -1366,7 +1368,8 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
|
|||
v.Set("stderr", "1")
|
||||
|
||||
if *proxy && !container.Config.Tty {
|
||||
cli.forwardAllSignals(cmd.Arg(0))
|
||||
sigc := cli.forwardAllSignals(cmd.Arg(0))
|
||||
defer utils.StopCatch(sigc)
|
||||
}
|
||||
|
||||
if err := cli.hijack("POST", "/containers/"+cmd.Arg(0)+"/attach?"+v.Encode(), container.Config.Tty, in, cli.out, cli.err, nil); err != nil {
|
||||
|
@ -1611,7 +1614,8 @@ func (cli *DockerCli) CmdRun(args ...string) error {
|
|||
}
|
||||
|
||||
if sigProxy {
|
||||
cli.forwardAllSignals(runResult.ID)
|
||||
sigc := cli.forwardAllSignals(runResult.ID)
|
||||
defer utils.StopCatch(sigc)
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
11
utils/signal.go
Normal file
11
utils/signal.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package utils
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/signal"
|
||||
)
|
||||
|
||||
func StopCatch(sigc chan os.Signal) {
|
||||
signal.Stop(sigc)
|
||||
close(sigc)
|
||||
}
|
Loading…
Add table
Reference in a new issue