From 4cb602afa0a905ceb0cccf49fe142c1c7b62087b Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Mon, 31 Mar 2014 20:22:28 -0600 Subject: [PATCH] Allow "SIG" prefix on signal names in `docker kill` ("SIGKILL", etc) This way, we can use both `docker kill -s INT some_container` and `docker kill -s SIGINT some_container` and both will do nice things for us. :) Docker-DCO-1.1-Signed-off-by: Andrew Page (github: tianon) --- integration/commands_test.go | 9 +++++++-- server/server.go | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/integration/commands_test.go b/integration/commands_test.go index 2dc0ff384a..15bb61b49c 100644 --- a/integration/commands_test.go +++ b/integration/commands_test.go @@ -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 { diff --git a/server/server.go b/server/server.go index 2cb3328d55..d689c0304c 100644 --- a/server/server.go +++ b/server/server.go @@ -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]) }