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 <admwiggin@gmail.com> (github: tianon)
| ... | ... |
@@ -1129,8 +1129,13 @@ func TestCmdKill(t *testing.T) {
|
| 1129 | 1129 |
}) |
| 1130 | 1130 |
|
| 1131 | 1131 |
setTimeout(t, "SIGUSR2 timed out", 2*time.Second, func() {
|
| 1132 |
- for i := 0; i < 10; i++ {
|
|
| 1133 |
- if err := cli2.CmdKill("--signal=USR2", container.ID); err != nil {
|
|
| 1132 |
+ for i := 0; i < 20; i++ {
|
|
| 1133 |
+ sig := "USR2" |
|
| 1134 |
+ if i%2 != 0 {
|
|
| 1135 |
+ // Swap to testing "SIGUSR2" for every odd iteration |
|
| 1136 |
+ sig = "SIGUSR2" |
|
| 1137 |
+ } |
|
| 1138 |
+ if err := cli2.CmdKill("--signal="+sig, container.ID); err != nil {
|
|
| 1134 | 1139 |
t.Fatal(err) |
| 1135 | 1140 |
} |
| 1136 | 1141 |
if err := expectPipe("SIGUSR2", stdout); err != nil {
|
| ... | ... |
@@ -144,6 +144,10 @@ func (srv *Server) ContainerKill(job *engine.Job) engine.Status {
|
| 144 | 144 |
if err != nil {
|
| 145 | 145 |
// The signal is not a number, treat it as a string |
| 146 | 146 |
sig = uint64(signal.SignalMap[job.Args[1]]) |
| 147 |
+ if sig == 0 && strings.HasPrefix(job.Args[1], "SIG") {
|
|
| 148 |
+ // If signal is prefixed with SIG, try with it stripped (ie, "SIGKILL", etc) |
|
| 149 |
+ sig = uint64(signal.SignalMap[job.Args[1][3:]]) |
|
| 150 |
+ } |
|
| 147 | 151 |
if sig == 0 {
|
| 148 | 152 |
return job.Errorf("Invalid signal: %s", job.Args[1])
|
| 149 | 153 |
} |