Author: nextgens
Date: 2007-03-17 12:04:58 +0000 (Sat, 17 Mar 2007)
New Revision: 12170

Modified:
   trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
Log:
prevent a potential NPE to be thrown in IPDetectorPluginManager

Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2007-03-17 
11:58:10 UTC (rev 12169)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2007-03-17 
12:04:58 UTC (rev 12170)
@@ -276,27 +276,29 @@
                                                // Has been connected in the 
last 24 hours.
                                                // Unique IP address?
                                                Peer peer = p.getPeer();
-                                               InetAddress addr = 
peer.getAddress(false);
-                                               if(p.isConnected() && (peer != 
null) && (addr != null) && IPUtil.isValidAddress(peer.getAddress(), false)) {
-                                                       // Connected node, on a 
real internet IP address.
-                                                       // Is it internal?
-                                                       boolean internal = 
false;
-                                                       for(int 
j=0;j<nodeAddrs.length;j++) {
-                                                               
if(addr.equals(nodeAddrs[j].getAddress())) {
-                                                                       // 
Internal
-                                                                       
internal = true;
-                                                                       break;
+                                               if(peer != null){
+                                                       InetAddress addr = 
peer.getAddress(false);
+                                                       if(p.isConnected() && 
(addr != null) && IPUtil.isValidAddress(peer.getAddress(), false)) {
+                                                               // Connected 
node, on a real internet IP address.
+                                                               // Is it 
internal?
+                                                               boolean 
internal = false;
+                                                               for(int 
j=0;j<nodeAddrs.length;j++) {
+                                                                       
if(addr.equals(nodeAddrs[j].getAddress())) {
+                                                                               
// Internal
+                                                                               
internal = true;
+                                                                               
break;
+                                                                       }
                                                                }
-                                                       }
-                                                       if(!internal) {
-                                                               // Real IP 
address
-                                                               
if(addressesConnected == null)
-                                                                       
addressesConnected = new HashSet();
-                                                               
addressesConnected.add(addr);
-                                                               
if(addressesConnected.size() > 2) {
-                                                                       // 3 
connected addresses, lets assume we have connectivity.
-                                                                       
if(logMINOR) Logger.minor(this, "Node has directly detected IP and has 
connected to 3 real IPs");
-                                                                       return;
+                                                               if(!internal) {
+                                                                       // Real 
IP address
+                                                                       
if(addressesConnected == null)
+                                                                               
addressesConnected = new HashSet();
+                                                                       
addressesConnected.add(addr);
+                                                                       
if(addressesConnected.size() > 2) {
+                                                                               
// 3 connected addresses, lets assume we have connectivity.
+                                                                               
if(logMINOR) Logger.minor(this, "Node has directly detected IP and has 
connected to 3 real IPs");
+                                                                               
return;
+                                                                       }
                                                                }
                                                        }
                                                }


Reply via email to