lnd+cmd: move interrupt into cmd
If the main package is used as a library, we don't want it to register interrupt signals itself. Rather we want to pass in the shutdown channel manually. We do this in the cmd now.
This commit is contained in:
parent
7158103d4d
commit
620eaa3199
@ -4,8 +4,9 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
flags "github.com/jessevdk/go-flags"
|
||||
"github.com/jessevdk/go-flags"
|
||||
"github.com/lightningnetwork/lnd"
|
||||
"github.com/lightningnetwork/lnd/signal"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@ -17,9 +18,15 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Hook interceptor for os signals.
|
||||
signal.Intercept()
|
||||
|
||||
// Call the "real" main in a nested manner so the defers will properly
|
||||
// be executed in the case of a graceful shutdown.
|
||||
if err := lnd.Main(loadedConfig, lnd.ListenerCfg{}); err != nil {
|
||||
err = lnd.Main(
|
||||
loadedConfig, lnd.ListenerCfg{}, signal.ShutdownChannel(),
|
||||
)
|
||||
if err != nil {
|
||||
if e, ok := err.(*flags.Error); ok && e.Type == flags.ErrHelp {
|
||||
} else {
|
||||
_, _ = fmt.Fprintln(os.Stderr, err)
|
||||
|
14
lnd.go
14
lnd.go
@ -147,13 +147,11 @@ type ListenerCfg struct {
|
||||
// listeners.
|
||||
type rpcListeners func() ([]*ListenerWithSignal, func(), error)
|
||||
|
||||
// Main is the true entry point for lnd. This function is required since defers
|
||||
// created in the top-level scope of a main method aren't executed if os.Exit()
|
||||
// is called.
|
||||
func Main(config *Config, lisCfg ListenerCfg) error {
|
||||
// Hook interceptor for os signals.
|
||||
signal.Intercept()
|
||||
|
||||
// Main is the true entry point for lnd. It accepts a fully populated and
|
||||
// validated main configuration struct and an optional listener config struct.
|
||||
// This function starts all main system components then blocks until a signal
|
||||
// is received on the shutdownChan at which point everything is shut down again.
|
||||
func Main(config *Config, lisCfg ListenerCfg, shutdownChan <-chan struct{}) error {
|
||||
cfg = config
|
||||
defer func() {
|
||||
ltndLog.Info("Shutdown complete")
|
||||
@ -728,7 +726,7 @@ func Main(config *Config, lisCfg ListenerCfg) error {
|
||||
|
||||
// Wait for shutdown signal from either a graceful server stop or from
|
||||
// the interrupt handler.
|
||||
<-signal.ShutdownChannel()
|
||||
<-shutdownChan
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user