From 166461787430bb943cfaec78166fd924db72b12f Mon Sep 17 00:00:00 2001 From: Matt Drollette Date: Mon, 25 Feb 2019 17:21:08 -0600 Subject: [PATCH] rpcserver: prevent overflow in channel count --- rpcserver.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rpcserver.go b/rpcserver.go index 926029ed1..52c7628be 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -1779,16 +1779,21 @@ func (r *rpcServer) fetchActiveChannel(chanPoint wire.OutPoint) ( func (r *rpcServer) GetInfo(ctx context.Context, in *lnrpc.GetInfoRequest) (*lnrpc.GetInfoResponse, error) { - var activeChannels uint32 serverPeers := r.server.Peers() - for _, serverPeer := range serverPeers { - activeChannels += uint32(len(serverPeer.ChannelSnapshots())) - } openChannels, err := r.server.chanDB.FetchAllOpenChannels() if err != nil { return nil, err } + + var activeChannels uint32 + for _, channel := range openChannels { + chanID := lnwire.NewChanIDFromOutPoint(&channel.FundingOutpoint) + if r.server.htlcSwitch.HasActiveLink(chanID) { + activeChannels++ + } + } + inactiveChannels := uint32(len(openChannels)) - activeChannels pendingChannels, err := r.server.chanDB.FetchPendingChannels()