From 47e32c82fcc1fe92fe5623032d49a6413e7dabb8 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 24 May 2009 17:03:50 +0000 Subject: [PATCH] fix geoip scan of all routerinfos at startup --- .../src/net/i2p/router/DummyNetworkDatabaseFacade.java | 1 + .../java/src/net/i2p/router/NetworkDatabaseFacade.java | 1 + .../kademlia/KademliaNetworkDatabaseFacade.java | 2 +- .../net/i2p/router/transport/CommSystemFacadeImpl.java | 10 ++++------ 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/DummyNetworkDatabaseFacade.java index f50e7b368a..e192e7752c 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 ded9bee26a..1ff7af1323 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 436fc526e3..aed932e5b8 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 53db9062ab..e38a59100d 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; -- GitLab