diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index 9358092260ea0e75d9e0f2c3b72718096d18129c..8b603776f0c9b10c8b70266ecd43d86afc13b7d9 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -191,6 +191,11 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad List<Hash> nextPeers = sel.selectFloodfillParticipants(nkey, NEXT_FLOOD_QTY, getKBuckets()); int i = 0; for (Hash h : nextPeers) { + // Don't flood an RI back to itself + // Not necessary, a ff will do its own flooding (reply token == 0) + // But other implementations may not... + if (h.equals(key)) + continue; // todo key cert skip? if (!peers.contains(h)) { peers.add(h); @@ -206,10 +211,11 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad RouterInfo target = lookupRouterInfoLocally(peer); if ( (target == null) || (_context.banlist().isBanlisted(peer)) ) continue; - // Don't flood a RI back to itself + // Don't flood an RI back to itself // Not necessary, a ff will do its own flooding (reply token == 0) - //if (peer.equals(target.getIdentity().getHash())) - // continue; + // But other implementations may not... + if (ds.getType() == DatabaseEntry.KEY_TYPE_ROUTERINFO && peer.equals(key)) + continue; if (peer.equals(_context.routerHash())) continue; DatabaseStoreMessage msg = new DatabaseStoreMessage(_context);