Router: Only flood LS2 to router that supports it

Use same version check in StoreJob for flooding
This commit is contained in:
zzz
2018-12-01 18:31:58 +00:00
parent 9efa0eaa40
commit 7c928f99ea

View File

@ -234,6 +234,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
_log.info("Flooding the entry for " + key + " to " + i + " more, just before midnight"); _log.info("Flooding the entry for " + key + " to " + i + " more, just before midnight");
} }
int flooded = 0; int flooded = 0;
boolean isls2 = ds.isLeaseSet() && ds.getType() != DatabaseEntry.KEY_TYPE_LEASESET;
for (int i = 0; i < peers.size(); i++) { for (int i = 0; i < peers.size(); i++) {
Hash peer = peers.get(i); Hash peer = peers.get(i);
RouterInfo target = lookupRouterInfoLocally(peer); RouterInfo target = lookupRouterInfoLocally(peer);
@ -246,6 +247,11 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
continue; continue;
if (peer.equals(_context.routerHash())) if (peer.equals(_context.routerHash()))
continue; continue;
// min version checks
if (isls2 && !StoreJob.shouldStoreLS2To(target))
continue;
if (!StoreJob.shouldStoreTo(target))
continue;
DatabaseStoreMessage msg = new DatabaseStoreMessage(_context); DatabaseStoreMessage msg = new DatabaseStoreMessage(_context);
msg.setEntry(ds); msg.setEntry(ds);
OutNetMessage m = new OutNetMessage(_context, msg, _context.clock().now()+FLOOD_TIMEOUT, FLOOD_PRIORITY, target); OutNetMessage m = new OutNetMessage(_context, msg, _context.clock().now()+FLOOD_TIMEOUT, FLOOD_PRIORITY, target);