Author: toad
Date: 2006-01-25 19:34:28 +0000 (Wed, 25 Jan 2006)
New Revision: 7925
Modified:
branches/async-client/src/freenet/client/StandardOnionFECCodec.java
branches/async-client/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
More splitfile fixes.
Modified: branches/async-client/src/freenet/client/StandardOnionFECCodec.java
===================================================================
--- branches/async-client/src/freenet/client/StandardOnionFECCodec.java
2006-01-25 18:50:48 UTC (rev 7924)
+++ branches/async-client/src/freenet/client/StandardOnionFECCodec.java
2006-01-25 19:34:28 UTC (rev 7925)
@@ -234,7 +234,7 @@
if (idx < k)
throw new IllegalArgumentException(
- "Must have at least k packets");
+ "Must have at least k packets
(k="+k+",idx="+idx+")");
for (int i = 0; i < packetIndexes.length; i++)
Logger.minor(this, "[" + i + "] = " +
packetIndexes[i]);
Modified:
branches/async-client/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/async-client/src/freenet/client/async/SplitFileFetcherSegment.java
2006-01-25 18:50:48 UTC (rev 7924)
+++ branches/async-client/src/freenet/client/async/SplitFileFetcherSegment.java
2006-01-25 19:34:28 UTC (rev 7925)
@@ -132,6 +132,7 @@
}
public synchronized void onSuccess(FetchResult result, ClientGetState
state) {
+ if(finished) return;
Integer token = (Integer) ((SingleFileFetcher)state).getToken();
int blockNo = token.intValue();
if(blockNo < dataBlocks.length) {
@@ -141,12 +142,13 @@
}
dataBlocks[blockNo] = null;
dataBuckets[blockNo].setData(result.asBucket());
- } else if(blockNo < checkBlocks.length) {
- if(checkBlocks[blockNo-dataBlocks.length] == null) {
- Logger.error(this, "Block already finished:
"+blockNo);
+ } else if(blockNo < checkBlocks.length + dataBlocks.length) {
+ blockNo -= dataBlocks.length;
+ if(checkBlocks[blockNo] == null) {
+ Logger.error(this, "Check block already
finished: "+blockNo);
return;
}
- checkBlocks[blockNo-dataBlocks.length] = null;
+ checkBlocks[blockNo] = null;
checkBuckets[blockNo].setData(result.asBucket());
} else
Logger.error(this, "Unrecognized block number:
"+blockNo, new Exception("error"));