Author: toad
Date: 2008-02-18 12:10:31 +0000 (Mon, 18 Feb 2008)
New Revision: 18035

Modified:
   trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
We don't always return here, so blockNo -= dataKeys.length causes us to 
rerequest the wrong block.

Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-02-18 12:03:02 UTC (rev 18034)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-02-18 12:10:31 UTC (rev 18035)
@@ -382,11 +382,11 @@
                                        return; // Don't add to sub-segment yet.
                                }
                        } else {
-                               blockNo -= dataKeys.length;
-                               tries = ++checkRetries[blockNo];
+                               int checkNo = blockNo - dataKeys.length;
+                               tries = ++checkRetries[checkNo];
                                if(tries > maxTries && maxTries >= 0) failed = 
true;
                                else if(tries % 
ClientRequestScheduler.COOLDOWN_RETRIES == 0) {
-                                       checkCooldownTimes[blockNo] = 
sched.queueCooldown(checkKeys[blockNo]);
+                                       checkCooldownTimes[checkNo] = 
sched.queueCooldown(checkKeys[checkNo]);
                                        return; // Don't add to sub-segment yet.
                                }
                        }


Reply via email to