diff --git a/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java index f50e7b368..e192e7752 100644 --- a/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java @@ -58,6 +58,7 @@ class DummyNetworkDatabaseFacade extends NetworkDatabaseFacade { _routers.remove(dbEntry); } + public Set getAllRouters() { return new HashSet(_routers.keySet()); } public Set findNearestRouters(Hash key, int maxNumRouters, Set peersToIgnore) { return new HashSet(_routers.values()); } public void renderStatusHTML(Writer out) throws IOException {} diff --git a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java index ded9bee26..1ff7af132 100644 --- a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java @@ -55,6 +55,7 @@ public abstract class NetworkDatabaseFacade implements Service { public abstract void unpublish(LeaseSet localLeaseSet); public abstract void fail(Hash dbEntry); + public abstract Set getAllRouters(); public int getKnownRouters() { return 0; } public int getKnownLeaseSets() { return 0; } public void renderRouterInfoHTML(Writer out, String s) throws IOException {} diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java index 436fc526e..aed932e5b 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -311,7 +311,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { } /** get the hashes for all known routers */ - Set getAllRouters() { + public Set getAllRouters() { if (!_initialized) return new HashSet(0); Set keys = _ds.getKeys(); Set rv = new HashSet(keys.size()); diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index 53db9062a..e38a59100 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -375,15 +375,13 @@ public class CommSystemFacadeImpl extends CommSystemFacade { /** * Collect the IPs for all routers in the DB, and queue them for lookup, * then fire off the periodic lookup task for the first time. - * - * We could use getAllRouters() if it were public, and that would be faster, but - * we only do this once. */ private class QueueAll implements SimpleTimer.TimedEvent { public void timeReached() { - Set routers = _context.netDb().findNearestRouters(_context.routerHash(), _context.netDb().getKnownRouters(), null); - for (Iterator iter = routers.iterator(); iter.hasNext(); ) { - RouterInfo ri = (RouterInfo) iter.next(); + for (Iterator iter = _context.netDb().getAllRouters().iterator(); iter.hasNext(); ) { + RouterInfo ri = _context.netDb().lookupRouterInfoLocally(iter.next()); + if (ri == null) + continue; String host = getIPString(ri); if (host == null) continue;