func handleSignals(serfAgent *agent.Agent, shutdownCh <-chan struct{}) { signalCh := make(chan os.Signal, 4) signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP) // Wait for signal // FIXME serf shutdowns too damn fast ! WAIT: select { case sig := <-signalCh: log.Info("caught signal: %v\n", sig) if sig == syscall.SIGHUP { // serf catches this signal to reload its configuration // NOTE reload sentinel conf ? goto WAIT } else { return } case <-shutdownCh: return case <-serfAgent.ShutdownCh(): // Agent is already shutdown! return } }