From 4200a3d04a5188d8118cb27dfa34e3cb21fab8c1 Mon Sep 17 00:00:00 2001 From: "Michael S. Fischer" Date: Mon, 30 Mar 2015 14:50:45 -0700 Subject: [PATCH] Handle SIGTERM when running commands Make Consul treat SIGTERM like it does SIGINT when running commands. This is especially important when running Consul as a daemon, since Unix process managers send SIGTERM to restart or terminate a process. This change is untested on Windows. Fixes hashicorp/consul#797 --- commands.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/commands.go b/commands.go index d4e9aa059..bd3d66a33 100644 --- a/commands.go +++ b/commands.go @@ -3,6 +3,7 @@ package main import ( "os" "os/signal" + "syscall" "github.com/hashicorp/consul/command" "github.com/hashicorp/consul/command/agent" @@ -136,12 +137,12 @@ func init() { // makeShutdownCh returns a channel that can be used for shutdown // notifications for commands. This channel will send a message for every -// interrupt received. +// interrupt or SIGTERM received. func makeShutdownCh() <-chan struct{} { resultCh := make(chan struct{}) signalCh := make(chan os.Signal, 4) - signal.Notify(signalCh, os.Interrupt) + signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM) go func() { for { <-signalCh