Author: toad
Date: 2008-02-05 00:36:43 +0000 (Tue, 05 Feb 2008)
New Revision: 17537
Modified:
trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
Take offered keys into account if we are going to use them.
Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-02-05 00:34:32 UTC (rev 17536)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-02-05 00:36:43 UTC (rev 17537)
@@ -345,7 +345,7 @@
return Math.max(0, retryCount-MIN_RETRY_COUNT);
}
- private int removeFirstAccordingToPriorities(){
+ private int removeFirstAccordingToPriorities(boolean tryOfferedKeys){
SortedVectorByNumber result = null;
short fuzz = -1, iteration = 0, priority;
@@ -362,7 +362,8 @@
while(iteration++ < RequestStarter.NUMBER_OF_PRIORITY_CLASSES +
1){
priority = fuzz<0 ?
tweakedPrioritySelector[random.nextInt(tweakedPrioritySelector.length)] :
prioritySelector[Math.abs(fuzz % prioritySelector.length)];
result = priorities[priority];
- if((result != null) && !result.isEmpty()) {
+ if((result != null) &&
+ (!result.isEmpty()) ||
(!offeredKeys[priority].isEmpty())) {
if(logMINOR) Logger.minor(this, "using priority
: "+priority);
return priority;
}
@@ -378,14 +379,14 @@
public SendableRequest removeFirst() {
// Priorities start at 0
if(logMINOR) Logger.minor(this, "removeFirst()");
- int choosenPriorityClass = removeFirstAccordingToPriorities();
+ boolean tryOfferedKeys = node.random.nextBoolean();
+ int choosenPriorityClass =
removeFirstAccordingToPriorities(tryOfferedKeys);
if(choosenPriorityClass == -1) {
if(logMINOR)
Logger.minor(this, "Nothing to do");
return null;
}
- boolean tryOfferedKeys = (offeredKeys != null) &&
node.random.nextBoolean();
- if(tryOfferedKeys) {
+ if((offeredKeys != null) && tryOfferedKeys) {
if(!offeredKeys[choosenPriorityClass].isEmpty())
return offeredKeys[choosenPriorityClass];
}