mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-27 22:21:18 +02:00
rpcperms+rpc: add ServerActive state and set it when server started
This commit is contained in:
@@ -44,6 +44,9 @@ const (
|
||||
|
||||
// rpcActive means that the RPC server is ready to accept calls.
|
||||
rpcActive
|
||||
|
||||
// serverActive means that the lnd server is ready to accept calls.
|
||||
serverActive
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -198,6 +201,15 @@ func (r *InterceptorChain) SetRPCActive() {
|
||||
_ = r.ntfnServer.SendUpdate(r.state)
|
||||
}
|
||||
|
||||
// SetServerActive moves the RPC state from walletUnlocked to rpcActive.
|
||||
func (r *InterceptorChain) SetServerActive() {
|
||||
r.Lock()
|
||||
defer r.Unlock()
|
||||
|
||||
r.state = serverActive
|
||||
_ = r.ntfnServer.SendUpdate(r.state)
|
||||
}
|
||||
|
||||
// rpcStateToWalletState converts rpcState to lnrpc.WalletState. Returns
|
||||
// WAITING_TO_START and an error on conversion error.
|
||||
func rpcStateToWalletState(state rpcState) (lnrpc.WalletState, error) {
|
||||
@@ -215,6 +227,8 @@ func rpcStateToWalletState(state rpcState) (lnrpc.WalletState, error) {
|
||||
walletState = lnrpc.WalletState_UNLOCKED
|
||||
case rpcActive:
|
||||
walletState = lnrpc.WalletState_RPC_ACTIVE
|
||||
case serverActive:
|
||||
walletState = lnrpc.WalletState_SERVER_ACTIVE
|
||||
|
||||
default:
|
||||
return defaultState, fmt.Errorf("unknown wallet state %v", state)
|
||||
@@ -558,9 +572,9 @@ func (r *InterceptorChain) checkRPCState(srv interface{}) error {
|
||||
|
||||
return ErrRPCStarting
|
||||
|
||||
// If the RPC is active, we allow calls to any service except the
|
||||
// WalletUnlocker.
|
||||
case rpcActive:
|
||||
// If the RPC server or lnd server is active, we allow calls to any
|
||||
// service except the WalletUnlocker.
|
||||
case rpcActive, serverActive:
|
||||
_, ok := srv.(lnrpc.WalletUnlockerServer)
|
||||
if ok {
|
||||
return ErrWalletUnlocked
|
||||
|
Reference in New Issue
Block a user