提交 647da1bd 作者: Juan Batiz-Benet

Merge pull request #582 from jbenet/addr-explosion

addr-explosion mitigated adding
...@@ -112,7 +112,9 @@ func (bsnet *impl) FindProvidersAsync(ctx context.Context, k util.Key, max int) ...@@ -112,7 +112,9 @@ func (bsnet *impl) FindProvidersAsync(ctx context.Context, k util.Key, max int)
defer close(out) defer close(out)
providers := bsnet.routing.FindProvidersAsync(ctx, k, max) providers := bsnet.routing.FindProvidersAsync(ctx, k, max)
for info := range providers { for info := range providers {
if info.ID != bsnet.host.ID() { // dont add addrs for ourselves.
bsnet.host.Peerstore().AddAddresses(info.ID, info.Addrs) bsnet.host.Peerstore().AddAddresses(info.ID, info.Addrs)
}
select { select {
case <-ctx.Done(): case <-ctx.Done():
return return
......
...@@ -236,9 +236,9 @@ func (dht *IpfsDHT) handleAddProvider(ctx context.Context, p peer.ID, pmes *pb.M ...@@ -236,9 +236,9 @@ func (dht *IpfsDHT) handleAddProvider(ctx context.Context, p peer.ID, pmes *pb.M
} }
log.Infof("received provider %s for %s (addrs: %s)", p, key, pi.Addrs) log.Infof("received provider %s for %s (addrs: %s)", p, key, pi.Addrs)
for _, maddr := range pi.Addrs { if pi.ID != dht.self { // dont add own addrs.
// add the received addresses to our peerstore. // add the received addresses to our peerstore.
dht.peerstore.AddAddress(p, maddr) dht.peerstore.AddPeerInfo(pi)
} }
dht.providers.AddProvider(key, p) dht.providers.AddProvider(key, p)
} }
......
...@@ -254,6 +254,11 @@ func (r *dhtQueryRunner) queryPeer(cg ctxgroup.ContextGroup, p peer.ID) { ...@@ -254,6 +254,11 @@ func (r *dhtQueryRunner) queryPeer(cg ctxgroup.ContextGroup, p peer.ID) {
} else if len(res.closerPeers) > 0 { } else if len(res.closerPeers) > 0 {
log.Debugf("PEERS CLOSER -- worker for: %v (%d closer peers)", p, len(res.closerPeers)) log.Debugf("PEERS CLOSER -- worker for: %v (%d closer peers)", p, len(res.closerPeers))
for _, next := range res.closerPeers { for _, next := range res.closerPeers {
if next.ID == r.query.dht.self { // dont add self.
log.Debugf("PEERS CLOSER -- worker for: %v found self", p)
continue
}
// add their addresses to the dialer's peerstore // add their addresses to the dialer's peerstore
r.query.dht.peerstore.AddPeerInfo(next) r.query.dht.peerstore.AddPeerInfo(next)
r.addPeerToQuery(cg.Context(), next.ID) r.addPeerToQuery(cg.Context(), next.ID)
......
...@@ -223,9 +223,11 @@ func (dht *IpfsDHT) closerPeersSingle(ctx context.Context, key u.Key, p peer.ID) ...@@ -223,9 +223,11 @@ func (dht *IpfsDHT) closerPeersSingle(ctx context.Context, key u.Key, p peer.ID)
var out []peer.ID var out []peer.ID
for _, pbp := range pmes.GetCloserPeers() { for _, pbp := range pmes.GetCloserPeers() {
pid := peer.ID(pbp.GetId()) pid := peer.ID(pbp.GetId())
if pid != dht.self { // dont add self
dht.peerstore.AddAddresses(pid, pbp.Addresses()) dht.peerstore.AddAddresses(pid, pbp.Addresses())
out = append(out, pid) out = append(out, pid)
} }
}
return out, nil return out, nil
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论