stop proxy at one point

This commit is contained in:
Victor Vieux
2013-10-29 14:29:01 -07:00
committed by Victor Vieux
parent e0b59ab52b
commit 700a71e6b6
2 changed files with 19 additions and 4 deletions
+8 -4
View File
@@ -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
View File
@@ -0,0 +1,11 @@
package utils
import (
"os"
"os/signal"
)
func StopCatch(sigc chan os.Signal) {
signal.Stop(sigc)
close(sigc)
}