diff --git a/lnrpc/routerrpc/router_server.go b/lnrpc/routerrpc/router_server.go
index <HASH>..<HASH> 100644
--- a/lnrpc/routerrpc/router_server.go
+++ b/lnrpc/routerrpc/router_server.go
@@ -445,7 +445,10 @@ func (s *Server) QueryMissionControl(ctx context.Context,
 	snapshot := s.cfg.RouterBackend.MissionControl.GetHistorySnapshot()
 
 	rpcNodes := make([]*NodeHistory, len(snapshot.Nodes))
-	for i, node := range snapshot.Nodes {
+	for i, n := range snapshot.Nodes {
+		// Copy node struct to prevent loop variable binding bugs.
+		node := n
+
 		channels := make([]*ChannelHistory, len(node.Channels))
 		for j, channel := range node.Channels {
 			channels[j] = &ChannelHistory{
routerrpc: fix loop variable binding bug in querymc

This bug caused all node pubkey to be the same.