[freenet-cvs] r13113 - trunk/freenet/src/freenet/support
toad at freenetproject.org
toad at freenetproject.org
Wed May 2 21:53:28 UTC 2007
Author: toad
Date: 2007-05-02 21:53:28 +0000 (Wed, 02 May 2007)
New Revision: 13113
Modified:
trunk/freenet/src/freenet/support/RandomGrabArray.java
trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java
Log:
Maybe fix downloads
Modified: trunk/freenet/src/freenet/support/RandomGrabArray.java
===================================================================
--- trunk/freenet/src/freenet/support/RandomGrabArray.java 2007-05-02 21:02:17 UTC (rev 13112)
+++ trunk/freenet/src/freenet/support/RandomGrabArray.java 2007-05-02 21:53:28 UTC (rev 13113)
@@ -63,6 +63,7 @@
}
int i = rand.nextInt(index);
ret = reqs[i];
+ if(ret.isCancelled()) ret = null;
if(ret != null && !ret.canRemove()) {
ret.setParentGrabArray(null);
return ret;
Modified: trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java
===================================================================
--- trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java 2007-05-02 21:02:17 UTC (rev 13112)
+++ trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java 2007-05-02 21:53:28 UTC (rev 13113)
@@ -74,7 +74,10 @@
if(logMINOR)
Logger.minor(this, "RGA has picked "+x+"/"+grabArrays.length+": "+item+
(item==null ? "" : (" cancelled="+item.isCancelled()+")"))+" rga.isEmpty="+rga.isEmpty());
- if(rga.isEmpty() || (item == null) || item.isCancelled()) {
+ // Just because the item is cancelled does not necessarily mean the whole client is.
+ // E.g. a segment may return cancelled because it is decoding, that doesn't mean
+ // other segements are cancelled. So just go around the loop in that case.
+ if(rga.isEmpty() || (item == null)) {
if(logMINOR)
Logger.minor(this, "Removing grab array "+x+" : "+rga+" for "+rga.getClient()+" (is empty)");
Object client = rga.getClient();
More information about the cvs
mailing list