提交 98f9ee91 作者: Jeromy 提交者: Juan Batiz-Benet

a better fix for duplicate peers in getPeers()

上级 a2ec7f28
...@@ -98,13 +98,18 @@ func (di *DiagInfo) Marshal() []byte { ...@@ -98,13 +98,18 @@ func (di *DiagInfo) Marshal() []byte {
} }
func (d *Diagnostics) getPeers() []peer.ID { func (d *Diagnostics) getPeers() []peer.ID {
conns := d.host.Network().Conns() peers := d.host.Network().Peers()
peers := make([]peer.ID, len(conns)) pmap := make(map[peer.ID]struct{})
out := make([]peer.ID, 0, len(peers))
for i, c := range conns { for _, p := range peers {
peers[i] = c.RemotePeer() _, ok := pmap[p]
if !ok {
out = append(out, p)
pmap[p] = struct{}{}
}
} }
return peers
return out
} }
func (d *Diagnostics) getDiagInfo() *DiagInfo { func (d *Diagnostics) getDiagInfo() *DiagInfo {
...@@ -239,7 +244,7 @@ func (d *Diagnostics) sendRequest(ctx context.Context, p peer.ID, pmes *pb.Messa ...@@ -239,7 +244,7 @@ func (d *Diagnostics) sendRequest(ctx context.Context, p peer.ID, pmes *pb.Messa
} }
func (d *Diagnostics) handleDiagnostic(p peer.ID, pmes *pb.Message) (*pb.Message, error) { func (d *Diagnostics) handleDiagnostic(p peer.ID, pmes *pb.Message) (*pb.Message, error) {
log.Debugf("HandleDiagnostic from %s for id = %s", p, pmes.GetDiagID()) log.Debugf("HandleDiagnostic from %s for id = %s", p, util.Key(pmes.GetDiagID()).B58String())
resp := newMessage(pmes.GetDiagID()) resp := newMessage(pmes.GetDiagID())
// Make sure we havent already handled this request to prevent loops // Make sure we havent already handled this request to prevent loops
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论