rpc: fix policy order for GetNodeInfo

GetNodeInfo retrieves the policies for every edge the node belongs to.
When these policies are retrieved from the database, they're returned
in the following order: the first policy is the outgoing policy from the
node, and the second is the incoming policy to the node. This ordering
is not consistent with the ordering we have within our other RPCs like
GetChanInfo and DescribeGraph, where policies are sorted based on the
smaller public key of the nodes within an edge.

We fix this by maintaining the same order as our other RPCs.
This commit is contained in:
Wilmer Paulino 2021-05-12 16:10:05 -07:00
parent c0acdd8082
commit b01437d24e
No known key found for this signature in database
GPG Key ID: 6DF57B9F9514972F

View File

@ -5155,6 +5155,12 @@ func (r *rpcServer) DescribeGraph(ctx context.Context,
func marshalDbEdge(edgeInfo *channeldb.ChannelEdgeInfo,
c1, c2 *channeldb.ChannelEdgePolicy) *lnrpc.ChannelEdge {
// Make sure the policies match the node they belong to. c1 should point
// to the policy for NodeKey1, and c2 for NodeKey2.
if c1.ChannelFlags&lnwire.ChanUpdateDirection == 1 {
c2, c1 = c1, c2
}
// Order the edges by increasing pubkey.
if bytes.Compare(edgeInfo.NodeKey2Bytes[:],
edgeInfo.NodeKey1Bytes[:]) < 0 {