diff --git a/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java index f50e7b368aacaaf3f08c3050e7dd4246704c0364..e192e7752ca3b5638a38c2517439e516b193e1ce 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<Hash> 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 ded9bee26a7a9f1445c440465d9f7a819af3b9b4..1ff7af13238e3991fc70a86bbd56c139a9388a17 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<Hash> 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 436fc526e39518f669002d5c9078784fd2f62637..aed932e5b89deb9e4de0c996500efe975a0f2e36 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<Hash> 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 53db9062abbebfabae41ecc7d0526eb0ab7e9180..e38a59100d6163c220054963863e2788d6f37172 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<Hash> 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;