Author: zothar
Date: 2006-06-25 05:49:58 +0000 (Sun, 25 Jun 2006)
New Revision: 9385

Modified:
   trunk/freenet/src/freenet/node/PeerManager.java
Log:
Fix an NPE in the missRoutingDistance calculation code.

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2006-06-25 05:31:21 UTC 
(rev 9384)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2006-06-25 05:49:58 UTC 
(rev 9385)
@@ -383,13 +383,15 @@
      */
     public PeerNode closerPeer(PeerNode pn, HashSet routedTo, HashSet 
notIgnored, double loc, boolean ignoreSelf) {
        PeerNode best = _closerPeer(pn, routedTo, notIgnored, loc, ignoreSelf, 
false);
-       if (node.getToadletContainer().isAdvancedDarknetEnabled()) {
+       if (best != null && 
node.getToadletContainer().isAdvancedDarknetEnabled()) {
                PeerNode nbo = _closerPeer(pn, routedTo, notIgnored, loc, 
ignoreSelf, true);
-               node.MissRoutingDistance.report(distance(best, 
nbo.getLocation().getValue()));
-               int numberOfConnected = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_CONNECTED);
-               int numberOfRoutingBackedOff = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF);
-               if (numberOfRoutingBackedOff + numberOfConnected > 0 ) {
-                       node.BackedoffPercent.report((double) 
numberOfRoutingBackedOff / (double) (numberOfRoutingBackedOff + 
numberOfConnected));
+               if(nbo != null) {
+                       node.MissRoutingDistance.report(distance(best, 
nbo.getLocation().getValue()));
+                       int numberOfConnected = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_CONNECTED);
+                       int numberOfRoutingBackedOff = 
node.getPeerNodeStatusSize(Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF);
+                       if (numberOfRoutingBackedOff + numberOfConnected > 0 ) {
+                               node.BackedoffPercent.report((double) 
numberOfRoutingBackedOff / (double) (numberOfRoutingBackedOff + 
numberOfConnected));
+                       }
                }
        }
        return best;


Reply via email to