@cryptotaxi247 / kubo / commits / c057cea64

addr-explosion mitigated adding

mitigated adding our own addresses where received from peers see #573

Juan Batiz-Benet committed Jan 16, 2015 at 02:13 UTC c057cea6496fcd6fb8de7cbf8d4922824b70aefe
4 files changed +14 -5
exchange/bitswap/network/ipfs_impl.go
+3 -1
@@ -112,7 +112,9 @@ func (bsnet *impl) FindProvidersAsync(ctx context.Context, k util.Key, max int)
112 defer close(out)
113 providers := bsnet.routing.FindProvidersAsync(ctx, k, max)
114 for info := range providers {
115 - bsnet.host.Peerstore().AddAddresses(info.ID, info.Addrs)
115 + if info.ID != bsnet.host.ID() { // dont add addrs for ourselves.
116 + bsnet.host.Peerstore().AddAddresses(info.ID, info.Addrs)
117 + }
118 select {
119 case <-ctx.Done():
120 return
routing/dht/handlers.go
+2 -2
@@ -236,9 +236,9 @@ func (dht *IpfsDHT) handleAddProvider(ctx context.Context, p peer.ID, pmes *pb.M
236 }
237
238 log.Infof("received provider %s for %s (addrs: %s)", p, key, pi.Addrs)
239 - for _, maddr := range pi.Addrs {
239 + if pi.ID != dht.self { // dont add own addrs.
240 // add the received addresses to our peerstore.
241 - dht.peerstore.AddAddress(p, maddr)
241 + dht.peerstore.AddPeerInfo(pi)
242 }
243 dht.providers.AddProvider(key, p)
244 }
routing/dht/query.go
+5
@@ -254,6 +254,11 @@ func (r *dhtQueryRunner) queryPeer(cg ctxgroup.ContextGroup, p peer.ID) {
254 } else if len(res.closerPeers) > 0 {
255 log.Debugf("PEERS CLOSER -- worker for: %v (%d closer peers)", p, len(res.closerPeers))
256 for _, next := range res.closerPeers {
257 + if next.ID == r.query.dht.self { // dont add self.
258 + log.Debugf("PEERS CLOSER -- worker for: %v found self", p)
259 + continue
260 + }
261 +
262 // add their addresses to the dialer's peerstore
263 r.query.dht.peerstore.AddPeerInfo(next)
264 r.addPeerToQuery(cg.Context(), next.ID)
routing/dht/routing.go
+4 -2
@@ -223,8 +223,10 @@ func (dht *IpfsDHT) closerPeersSingle(ctx context.Context, key u.Key, p peer.ID)
223 var out []peer.ID
224 for _, pbp := range pmes.GetCloserPeers() {
225 pid := peer.ID(pbp.GetId())
226 - dht.peerstore.AddAddresses(pid, pbp.Addresses())
227 - out = append(out, pid)
226 + if pid != dht.self { // dont add self
227 + dht.peerstore.AddAddresses(pid, pbp.Addresses())
228 + out = append(out, pid)
229 + }
230 }
231 return out, nil
232 }