Author: toad
Date: 2008-04-11 21:44:40 +0000 (Fri, 11 Apr 2008)
New Revision: 19210

Modified:
   trunk/freenet/src/freenet/node/NodeIPPortDetector.java
Log:
Fix #2070: if there is a bindTo set, and it's a real IP address, use it, and 
only it.

Modified: trunk/freenet/src/freenet/node/NodeIPPortDetector.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeIPPortDetector.java      2008-04-11 
21:23:07 UTC (rev 19209)
+++ trunk/freenet/src/freenet/node/NodeIPPortDetector.java      2008-04-11 
21:44:40 UTC (rev 19210)
@@ -43,18 +43,13 @@
         * (for that port/NodeCrypto) list of IP addresses (still without port 
numbers).
         */
        FreenetInetAddress[] detectPrimaryIPAddress() {
-               FreenetInetAddress[] addresses = 
ipDetector.detectPrimaryIPAddress();
                FreenetInetAddress addr = crypto.getBindTo();
                if(addr.isRealInternetAddress(false, true, false)) {
-                       for(int i=0;i<addresses.length;i++) {
-                               if(addresses[i] == addr) return addresses;
-                       }
-                       FreenetInetAddress[] newAddresses = new 
FreenetInetAddress[addresses.length+1];
-                       System.arraycopy(addresses, 0, newAddresses, 0, 
addresses.length);
-                       newAddresses[addresses.length] = addr;
-                       return newAddresses;
+                       // Binding to a real internet address => don't want us 
to use the others, most likely
+                       // he is on a multi-homed box where only one IP can be 
used for Freenet.
+                       return new FreenetInetAddress[] { addr };
                }
-               return addresses;
+               return ipDetector.detectPrimaryIPAddress();
        }

        /**


Reply via email to