diff --git a/rpcserver.go b/rpcserver.go index 651b131c1..627248c60 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -5673,23 +5673,7 @@ func (r *rpcServer) DescribeGraph(ctx context.Context, // within the graph), collating their current state into the RPC // response. err := graph.ForEachNode(func(_ kvdb.RTx, node *channeldb.LightningNode) error { - nodeAddrs := make([]*lnrpc.NodeAddress, 0) - for _, addr := range node.Addresses { - nodeAddr := &lnrpc.NodeAddress{ - Network: addr.Network(), - Addr: addr.String(), - } - nodeAddrs = append(nodeAddrs, nodeAddr) - } - - lnNode := &lnrpc.LightningNode{ - LastUpdate: uint32(node.LastUpdate.Unix()), - PubKey: hex.EncodeToString(node.PubKeyBytes[:]), - Addresses: nodeAddrs, - Alias: node.Alias, - Color: routing.EncodeHexColor(node.Color), - Features: invoicesrpc.CreateRPCFeatures(node.Features), - } + lnNode := marshalNode(node) resp.Nodes = append(resp.Nodes, lnNode) @@ -5927,32 +5911,36 @@ func (r *rpcServer) GetNodeInfo(ctx context.Context, return nil, err } - nodeAddrs := make([]*lnrpc.NodeAddress, 0) - for _, addr := range node.Addresses { - nodeAddr := &lnrpc.NodeAddress{ - Network: addr.Network(), - Addr: addr.String(), - } - nodeAddrs = append(nodeAddrs, nodeAddr) - } - - features := invoicesrpc.CreateRPCFeatures(node.Features) - return &lnrpc.NodeInfo{ - Node: &lnrpc.LightningNode{ - LastUpdate: uint32(node.LastUpdate.Unix()), - PubKey: in.PubKey, - Addresses: nodeAddrs, - Alias: node.Alias, - Color: routing.EncodeHexColor(node.Color), - Features: features, - }, + Node: marshalNode(node), NumChannels: numChannels, TotalCapacity: int64(totalCapacity), Channels: channels, }, nil } +func marshalNode(node *channeldb.LightningNode) *lnrpc.LightningNode { + nodeAddrs := make([]*lnrpc.NodeAddress, len(node.Addresses)) + for i, addr := range node.Addresses { + nodeAddr := &lnrpc.NodeAddress{ + Network: addr.Network(), + Addr: addr.String(), + } + nodeAddrs[i] = nodeAddr + } + + features := invoicesrpc.CreateRPCFeatures(node.Features) + + return &lnrpc.LightningNode{ + LastUpdate: uint32(node.LastUpdate.Unix()), + PubKey: hex.EncodeToString(node.PubKeyBytes[:]), + Addresses: nodeAddrs, + Alias: node.Alias, + Color: routing.EncodeHexColor(node.Color), + Features: features, + } +} + // QueryRoutes attempts to query the daemons' Channel Router for a possible // route to a target destination capable of carrying a specific amount of // satoshis within the route's flow. The returned route contains the full