Author: toad
Date: 2008-01-31 23:05:47 +0000 (Thu, 31 Jan 2008)
New Revision: 17450

Modified:
   trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
Log:
Don't count nodes on any of our IP addresses either.

Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-01-31 
23:02:46 UTC (rev 17449)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-01-31 
23:05:47 UTC (rev 17450)
@@ -301,7 +301,7 @@

                        } else {

-                               if(shouldDetectWithPeers(now, peers, conns)) 
startDetect();
+                               if(shouldDetectWithPeers(now, peers, conns, 
nodeAddrs)) startDetect();

                        }
                }
@@ -332,7 +332,7 @@
         * @param conns The node's connected peers.
         * @return True if we should run a detection.
         */
-       private boolean shouldDetectWithPeers(long now, PeerNode[] peers, 
PeerNode[] conns) {
+       private boolean shouldDetectWithPeers(long now, PeerNode[] peers, 
PeerNode[] conns, FreenetInetAddress[] nodeAddrs) {

                boolean detect = false;

@@ -348,9 +348,20 @@
                                PeerNode p = peers[i];
                                if(p.isDisabled()) continue;
                                // Don't count localhost, LAN addresses.
-                               InetAddress addr = 
p.getPeer().getAddress(false);
-                               if(addr != null) {
-                                       if(!IPUtil.isValidAddress(addr, false)) 
continue;
+                               FreenetInetAddress a = 
p.getPeer().getFreenetAddress();
+                               if(a != null) {
+                                       InetAddress addr = a.getAddress(false);
+                                       if(addr != null) {
+                                               if(!IPUtil.isValidAddress(addr, 
false)) continue;
+                                       }
+                                       boolean skip = false;
+                                       for(int j=0;j<nodeAddrs.length;j++) {
+                                               if(a.equals(nodeAddrs[j])) {
+                                                       skip = true;
+                                                       break;
+                                               }
+                                       }
+                                       if(skip) continue;
                                }
                                maybeUrgent = true;
                                if(logMINOR) Logger.minor(this, "No 
connections, but have peers, may detect...");


Reply via email to