mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-02 12:20:03 +08:00
addr-explosion mitigated adding
mitigated adding our own addresses where received from peers see #573
This commit is contained in:
@ -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
|
|||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
|||||||
} 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)
|
|||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user