Author: toad
Date: 2008-02-06 19:10:06 +0000 (Wed, 06 Feb 2008)
New Revision: 17602

Modified:
   trunk/freenet/src/freenet/node/FailureTableEntry.java
Log:
Check got == requestor before checking expiry

Modified: trunk/freenet/src/freenet/node/FailureTableEntry.java
===================================================================
--- trunk/freenet/src/freenet/node/FailureTableEntry.java       2008-02-06 
19:08:54 UTC (rev 17601)
+++ trunk/freenet/src/freenet/node/FailureTableEntry.java       2008-02-06 
19:10:06 UTC (rev 17602)
@@ -131,13 +131,6 @@
                for(int i=0;i<requestorNodes.length;i++) {
                        PeerNode got = requestorNodes[i] == null ? null : 
(PeerNode) requestorNodes[i].get();
                        // No longer subscribed if they have rebooted, or 
expired
-                       if(got != null && got.getBootID() != 
requestorBootIDs[i] ||
-                                       now - requestorTimes[i] > 
MAX_TIME_BETWEEN_REQUEST_AND_OFFER) {
-                               requestorNodes[i] = null;
-                               got = null;
-                       }
-                       if(got == null)
-                               nulls++;
                        if(got == requestor) {
                                // Update existing entry
                                includedAlready = true;
@@ -146,6 +139,13 @@
                                ret = i;
                                break;
                        }
+                       if(got != null && got.getBootID() != 
requestorBootIDs[i] ||
+                                       now - requestorTimes[i] > 
MAX_TIME_BETWEEN_REQUEST_AND_OFFER) {
+                               requestorNodes[i] = null;
+                               got = null;
+                       }
+                       if(got == null)
+                               nulls++;
                }
                if(nulls == 0 && includedAlready) return ret;
                int notIncluded = includedAlready ? 0 : 1;
@@ -212,8 +212,6 @@
                int ret = -1;
                for(int i=0;i<requestedNodes.length;i++) {
                        PeerNode got = requestedNodes[i] == null ? null : 
(PeerNode) requestedNodes[i].get();
-                       if(got == null)
-                               nulls++;
                        if(got == requestedFrom) {
                                // Update existing entry
                                includedAlready = true;
@@ -223,6 +221,8 @@
                                ret = i;
                                break;
                        }
+                       if(got == null)
+                               nulls++;
                }
                if(includedAlready && nulls == 0) return ret;
                int notIncluded = includedAlready ? 0 : 1;


Reply via email to