Author: toad
Date: 2008-11-21 19:45:17 +0000 (Fri, 21 Nov 2008)
New Revision: 23790
Modified:
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Doh!
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-11-21 19:35:04 UTC (rev 23789)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-11-21 19:45:17 UTC (rev 23790)
@@ -167,6 +167,7 @@
}
public void onSuccess(Bucket data, int blockNo,
SplitFileFetcherSubSegment seg, ClientKeyBlock block) {
+ if(data == null) throw new NullPointerException();
boolean decodeNow = false;
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "Fetched block "+blockNo+" on
"+seg);
@@ -175,8 +176,10 @@
// No need to unregister key, because it will be cleared in
tripPendingKey().
boolean dontNotify;
boolean haveDataBlocks;
+ boolean wasDataBlock = false;
synchronized(this) {
if(blockNo < dataKeys.length) {
+ wasDataBlock = true;
if(dataKeys[blockNo] == null) {
if(!startedDecode) Logger.error(this,
"Block already finished: "+blockNo);
data.free();
@@ -205,7 +208,7 @@
fetchedBlocks++;
// However, if we manage to get EVERY data
block (common on a small splitfile),
// we don't need to FEC decode.
- if(blockNo < dataKeys.length)
+ if(wasDataBlock)
fetchedDataBlocks++;
if(logMINOR) Logger.minor(this, "Fetched
"+fetchedBlocks+" blocks in onSuccess("+blockNo+")");
haveDataBlocks = fetchedDataBlocks ==
dataKeys.length;
@@ -260,6 +263,8 @@
for(int i=0;i<dataBuckets.length;i++) {
SplitfileBlock status = dataBuckets[i];
Bucket data = status.getData();
+ if(data == null)
+ throw new NullPointerException("Data
bucket "+i+" of "+dataBuckets.length+" is null");
long copied = BucketTools.copyTo(data, os,
Long.MAX_VALUE);
osSize += copied;
if(i != dataBuckets.length-1 && copied != 32768)
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs