Merge pull request #4947 from tianon/sig

Allow "SIG" prefix on signal names in `docker kill` ("SIGKILL", etc)
This commit is contained in:
Michael Crosby 2014-04-01 11:59:44 -07:00
commit 7ab66fa694
2 changed files with 11 additions and 2 deletions

View File

@ -1129,8 +1129,13 @@ func TestCmdKill(t *testing.T) {
})
setTimeout(t, "SIGUSR2 timed out", 2*time.Second, func() {
for i := 0; i < 10; i++ {
if err := cli2.CmdKill("--signal=USR2", container.ID); err != nil {
for i := 0; i < 20; i++ {
sig := "USR2"
if i%2 != 0 {
// Swap to testing "SIGUSR2" for every odd iteration
sig = "SIGUSR2"
}
if err := cli2.CmdKill("--signal="+sig, container.ID); err != nil {
t.Fatal(err)
}
if err := expectPipe("SIGUSR2", stdout); err != nil {

View File

@ -144,6 +144,10 @@ func (srv *Server) ContainerKill(job *engine.Job) engine.Status {
if err != nil {
// The signal is not a number, treat it as a string
sig = uint64(signal.SignalMap[job.Args[1]])
if sig == 0 && strings.HasPrefix(job.Args[1], "SIG") {
// If signal is prefixed with SIG, try with it stripped (ie, "SIGKILL", etc)
sig = uint64(signal.SignalMap[job.Args[1][3:]])
}
if sig == 0 {
return job.Errorf("Invalid signal: %s", job.Args[1])
}