mobile: return error in case lnd is already running
This commit is contained in:
parent
321141600e
commit
980beba985
@ -3,9 +3,11 @@
|
|||||||
package lndmobile
|
package lndmobile
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync/atomic"
|
||||||
|
|
||||||
flags "github.com/jessevdk/go-flags"
|
flags "github.com/jessevdk/go-flags"
|
||||||
"github.com/lightningnetwork/lnd"
|
"github.com/lightningnetwork/lnd"
|
||||||
@ -13,6 +15,10 @@ import (
|
|||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// lndStarted will be used atomically to ensure only a singel lnd instance is
|
||||||
|
// attempted to be started at once.
|
||||||
|
var lndStarted int32
|
||||||
|
|
||||||
// Start starts lnd in a new goroutine.
|
// Start starts lnd in a new goroutine.
|
||||||
//
|
//
|
||||||
// extraArgs can be used to pass command line arguments to lnd that will
|
// extraArgs can be used to pass command line arguments to lnd that will
|
||||||
@ -77,9 +83,19 @@ func Start(extraArgs string, rpcReady Callback) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We only support a single lnd instance at a time (singleton) for now,
|
||||||
|
// so we make sure to return immediately if it has already been
|
||||||
|
// started.
|
||||||
|
if !atomic.CompareAndSwapInt32(&lndStarted, 0, 1) {
|
||||||
|
err := errors.New("lnd already started")
|
||||||
|
rpcReady.OnError(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Call the "real" main in a nested manner so the defers will properly
|
// Call the "real" main in a nested manner so the defers will properly
|
||||||
// be executed in the case of a graceful shutdown.
|
// be executed in the case of a graceful shutdown.
|
||||||
go func() {
|
go func() {
|
||||||
|
defer atomic.StoreInt32(&lndStarted, 0)
|
||||||
defer close(quit)
|
defer close(quit)
|
||||||
|
|
||||||
if err := lnd.Main(
|
if err := lnd.Main(
|
||||||
|
Loading…
Reference in New Issue
Block a user