|
|
@ -946,6 +946,7 @@ func (c *Command) Run(args []string) int {
|
|
|
|
func (c *Command) handleSignals(config *Config, retryJoin <-chan struct{}, retryJoinWan <-chan struct{}) int {
|
|
|
|
func (c *Command) handleSignals(config *Config, retryJoin <-chan struct{}, retryJoinWan <-chan struct{}) int {
|
|
|
|
signalCh := make(chan os.Signal, 4)
|
|
|
|
signalCh := make(chan os.Signal, 4)
|
|
|
|
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP)
|
|
|
|
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP)
|
|
|
|
|
|
|
|
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGPIPE)
|
|
|
|
|
|
|
|
|
|
|
|
// Wait for a signal
|
|
|
|
// Wait for a signal
|
|
|
|
WAIT:
|
|
|
|
WAIT:
|
|
|
@ -971,6 +972,11 @@ WAIT:
|
|
|
|
}
|
|
|
|
}
|
|
|
|
c.Ui.Output(fmt.Sprintf("Caught signal: %v", sig))
|
|
|
|
c.Ui.Output(fmt.Sprintf("Caught signal: %v", sig))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Skip SIGPIPE signals
|
|
|
|
|
|
|
|
if sig == syscall.SIGPIPE {
|
|
|
|
|
|
|
|
goto WAIT
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Check if this is a SIGHUP
|
|
|
|
// Check if this is a SIGHUP
|
|
|
|
if sig == syscall.SIGHUP {
|
|
|
|
if sig == syscall.SIGHUP {
|
|
|
|
conf, err := c.handleReload(config)
|
|
|
|
conf, err := c.handleReload(config)
|
|
|
|