signal: handle shutdown properly

This addresses issues related to the mobile lnd builds, where
calling `stopDaemon` and subsequently calling LndMobile's `Start`
results in crash.
This commit is contained in:
Hampus Sjöberg committed 2021-03-18 12:54:25 +01:00
1 parent 6046c5cf86
commit ada1bc701c
11 files changed
+170 -129

No files matched your search

+1 -2
View File
@@ -18,7 +18,6 @@ import (
"github.com/btcsuite/btcutil"
"github.com/lightningnetwork/lnd/lnrpc"
"github.com/lightningnetwork/lnd/lnwallet/chanfunding"
"github.com/lightningnetwork/lnd/signal"
"github.com/urfave/cli"
)
@@ -467,7 +466,7 @@ func openChannelPsbt(rpcCtx context.Context, ctx *cli.Context,
// the server.
go func() {
select {
case <-signal.ShutdownChannel():
case <-rpcCtx.Done():
fmt.Printf("\nInterrupt signal received.\n")
close(quit)
+3 -2
View File
@@ -41,14 +41,15 @@ const (
)
func getContext() context.Context {
if err := signal.Intercept(); err != nil {
shutdownInterceptor, err := signal.Intercept()
if err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
ctxc, cancel := context.WithCancel(context.Background())
go func() {
<-signal.ShutdownChannel()
<-shutdownInterceptor.ShutdownChannel()
cancel()
}()
return ctxc