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