Author: toad
Date: 2008-03-11 15:02:36 +0000 (Tue, 11 Mar 2008)
New Revision: 18460
Modified:
trunk/freenet/src/freenet/io/AddressTracker.java
trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java
trunk/freenet/src/freenet/io/comm/Peer.java
trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/NodeIPDetector.java
trunk/freenet/src/freenet/node/NodeIPPortDetector.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Add allowLocalAddresses to FreenetInetAddress.isRealInternetAddress().
Benefit: even if allow local addresses is enabled, we can still screen out
silly addresses such as multicast and wildcard (0.x.y.z) addresses.
Modified: trunk/freenet/src/freenet/io/AddressTracker.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressTracker.java 2008-03-11 15:00:44 UTC
(rev 18459)
+++ trunk/freenet/src/freenet/io/AddressTracker.java 2008-03-11 15:02:36 UTC
(rev 18460)
@@ -220,7 +220,7 @@
for(int i=0;i<items.length;i++) {
PeerAddressTrackerItem item = items[i];
if(item.packetsReceived() <= 0) continue;
- if(!item.peer.isRealInternetAddress(false, false))
continue;
+ if(!item.peer.isRealInternetAddress(false, false,
false)) continue;
longestGap = Math.max(longestGap,
item.longestGap(horizon, now));
}
return longestGap;
Modified: trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java 2008-03-11
15:00:44 UTC (rev 18459)
+++ trunk/freenet/src/freenet/io/comm/FreenetInetAddress.java 2008-03-11
15:02:36 UTC (rev 18460)
@@ -352,14 +352,14 @@
return addr;
}
- public boolean isRealInternetAddress(boolean lookup, boolean
defaultVal) {
+ public boolean isRealInternetAddress(boolean lookup, boolean
defaultVal, boolean allowLocalAddresses) {
if(_address != null) {
- return IPUtil.isValidAddress(_address, false);
+ return IPUtil.isValidAddress(_address,
allowLocalAddresses);
} else {
if(lookup) {
InetAddress a = getAddress();
if(a != null)
- return IPUtil.isValidAddress(a, false);
+ return IPUtil.isValidAddress(a,
allowLocalAddresses);
}
return defaultVal;
}
Modified: trunk/freenet/src/freenet/io/comm/Peer.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/Peer.java 2008-03-11 15:00:44 UTC (rev
18459)
+++ trunk/freenet/src/freenet/io/comm/Peer.java 2008-03-11 15:02:36 UTC (rev
18460)
@@ -228,8 +228,8 @@
return addr;
}
- public boolean isRealInternetAddress(boolean lookup, boolean
defaultVal) {
- return addr.isRealInternetAddress(lookup, defaultVal);
+ public boolean isRealInternetAddress(boolean lookup, boolean
defaultVal, boolean allowLocalAddresses) {
+ return addr.isRealInternetAddress(lookup, defaultVal,
allowLocalAddresses);
}
/**
Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-03-11
15:00:44 UTC (rev 18459)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-03-11
15:02:36 UTC (rev 18460)
@@ -382,7 +382,7 @@
if(firstTimeUrgent <= 0)
firstTimeUrgent = now;
- if(detector.oldIPAddress != null &&
detector.oldIPAddress.isRealInternetAddress(false, false)) {
+ if(detector.oldIPAddress != null &&
detector.oldIPAddress.isRealInternetAddress(false, false, false)) {
if(logDEBUG) Logger.debug(this, "Detecting in 2
minutes as have oldIPAddress");
// Allow 2 minutes to get incoming connections
and therefore detect from them.
// In the meantime, *hopefully* our
oldIPAddress is valid.
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2008-03-11 15:00:44 UTC (rev
18459)
+++ trunk/freenet/src/freenet/node/Node.java 2008-03-11 15:02:36 UTC (rev
18460)
@@ -3140,9 +3140,9 @@
*/
public synchronized boolean dontDetect() {
// Only return true if bindTo is set on all ports which are in
use
- if(!darknetCrypto.bindto.isRealInternetAddress(false, true))
return false;
+ if(!darknetCrypto.bindto.isRealInternetAddress(false, true,
false)) return false;
if(opennet != null) {
- if(opennet.crypto.bindto.isRealInternetAddress(false,
true)) return false;
+ if(opennet.crypto.bindto.isRealInternetAddress(false,
true, false)) return false;
}
return true;
}
Modified: trunk/freenet/src/freenet/node/NodeIPDetector.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeIPDetector.java 2008-03-11 15:00:44 UTC
(rev 18459)
+++ trunk/freenet/src/freenet/node/NodeIPDetector.java 2008-03-11 15:02:36 UTC
(rev 18460)
@@ -103,7 +103,7 @@
// If the IP is overridden and the override is valid,
the override has to be the first element.
// overrideIPAddress will be null if the override is
invalid
addresses.add(overrideIPAddress);
- if(overrideIPAddress.isRealInternetAddress(false, true))
+ if(overrideIPAddress.isRealInternetAddress(false, true,
false))
addedValidIP = true;
}
@@ -166,7 +166,7 @@
if(!addresses.contains(addr)) {
Logger.normal(this, "Detected IP address:
"+addr);
addresses.add(addr);
- if(addr.isRealInternetAddress(false, false))
+ if(addr.isRealInternetAddress(false, false,
false))
addedValidIP = true;
}
}
@@ -179,7 +179,7 @@
if(!addresses.contains(a)) {
Logger.normal(this, "Plugin detected IP
address: "+a);
addresses.add(a);
- if(a.isRealInternetAddress(false,
false))
+ if(a.isRealInternetAddress(false,
false, false))
addedValidIP = true;
}
}
@@ -187,7 +187,7 @@
if((!addedValidIP) && (oldIPAddress != null) &&
!oldIPAddress.equals(overrideIPAddress)) {
addresses.add(oldIPAddress);
- if(oldIPAddress.isRealInternetAddress(false, true))
+ if(oldIPAddress.isRealInternetAddress(false, true,
false))
addedValidIP = true;
}
@@ -217,7 +217,7 @@
FreenetInetAddress addr = (FreenetInetAddress)
(it.next());
Logger.minor(this, "Everyone agrees we are
"+addr);
if(!addresses.contains(addr)) {
- if(addr.isRealInternetAddress(false,
false))
+ if(addr.isRealInternetAddress(false,
false, false))
addedValidIP = true;
addresses.add(addr);
}
@@ -244,14 +244,14 @@
if(!addresses.contains(best)) {
Logger.normal(this,
"Adding best peer "+best+" ("+bestPopularity+ ')');
addresses.add(best);
-
if(best.isRealInternetAddress(false, false))
+
if(best.isRealInternetAddress(false, false, false))
addedValidIP =
true;
}
if((secondBest != null) &&
(secondBestPopularity > 1)) {
if(!addresses.contains(secondBest)) {
Logger.normal(this, "Adding second best peer "+secondBest+" ("+secondBest+ ')');
addresses.add(secondBest);
-
if(secondBest.isRealInternetAddress(false, false))
+
if(secondBest.isRealInternetAddress(false, false, false))
addedValidIP = true;
}
}
Modified: trunk/freenet/src/freenet/node/NodeIPPortDetector.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeIPPortDetector.java 2008-03-11
15:00:44 UTC (rev 18459)
+++ trunk/freenet/src/freenet/node/NodeIPPortDetector.java 2008-03-11
15:02:36 UTC (rev 18460)
@@ -45,7 +45,7 @@
FreenetInetAddress[] detectPrimaryIPAddress() {
FreenetInetAddress[] addresses =
ipDetector.detectPrimaryIPAddress();
FreenetInetAddress addr = crypto.bindto;
- if(addr.isRealInternetAddress(false, true)) {
+ if(addr.isRealInternetAddress(false, true, false)) {
for(int i=0;i<addresses.length;i++) {
if(addresses[i] == addr) return addresses;
}
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2008-03-11 15:00:44 UTC
(rev 18459)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2008-03-11 15:02:36 UTC
(rev 18460)
@@ -3507,7 +3507,7 @@
if(logMINOR) Logger.minor(this, "Not sending
handshake to "+handshakeIPs[i]+" for "+getPeer()+" because the DNS lookup
failed or it's a currently unsupported IPv6 address");
continue;
}
- if((!allowLocalAddresses()) &&
(!peer.isRealInternetAddress(false, false))) {
+ if(!peer.isRealInternetAddress(false, false,
allowLocalAddresses())) {
if(logMINOR) Logger.minor(this, "Not sending
handshake to "+handshakeIPs[i]+" for "+getPeer()+" because it's not a real
Internet address and metadata.allowLocalAddresses is not true");
continue;
}