Author: toad
Date: 2006-01-27 21:14:20 +0000 (Fri, 27 Jan 2006)
New Revision: 7956
Modified:
trunk/freenet/src/freenet/client/StandardOnionFECCodec.java
trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
trunk/freenet/src/freenet/client/async/SingleFileInserter.java
trunk/freenet/src/freenet/client/async/SplitFileInserter.java
trunk/freenet/src/freenet/node/Version.java
Log:
407:
Client.async fixes related to large files.
Modified: trunk/freenet/src/freenet/client/StandardOnionFECCodec.java
===================================================================
--- trunk/freenet/src/freenet/client/StandardOnionFECCodec.java 2006-01-27
20:39:29 UTC (rev 7955)
+++ trunk/freenet/src/freenet/client/StandardOnionFECCodec.java 2006-01-27
21:14:20 UTC (rev 7956)
@@ -354,10 +354,9 @@
+ " data blocks, " + checkBlockStatus.length
+ " check blocks, block length " + blockLength
+ " with "
+ this);
- if (dataBlockStatus.length + checkBlockStatus.length != n)
- throw new IllegalArgumentException();
- if (dataBlockStatus.length != k)
- throw new IllegalArgumentException();
+ if (dataBlockStatus.length + checkBlockStatus.length != n ||
+ dataBlockStatus.length != k)
+ throw new IllegalArgumentException("Data blocks:
"+dataBlockStatus.length+", Check blocks: "+checkBlockStatus.length+", n:
"+n+", k: "+k);
Buffer[] dataPackets = new Buffer[k];
Buffer[] checkPackets = new Buffer[n - k];
Bucket[] buckets = new Bucket[n];
Modified: trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
2006-01-27 20:39:29 UTC (rev 7955)
+++ trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
2006-01-27 21:14:20 UTC (rev 7956)
@@ -399,6 +399,9 @@
parent.currentState = SingleFileFetcher.this;
try {
metadata =
Metadata.construct(result.asBucket());
+ SingleFileFetcher f = new
SingleFileFetcher(parent, rcb, clientMetadata, key, metaStrings, ctx, actx,
maxRetries, recursionLevel, dontTellClientGet, null, true);
+ f.metadata = metadata;
+ f.handleMetadata();
} catch (MetadataParseException e) {
SingleFileFetcher.this.onFailure(new
FetchException(e));
return;
@@ -406,6 +409,12 @@
// Bucket error?
SingleFileFetcher.this.onFailure(new
FetchException(FetchException.BUCKET_ERROR, e));
return;
+ } catch (FetchException e) {
+ onFailure(e, SingleFileFetcher.this);
+ } catch (ArchiveFailureException e) {
+ onFailure(new
FetchException(FetchException.ARCHIVE_FAILURE), SingleFileFetcher.this);
+ } catch (ArchiveRestartException e) {
+ onFailure(new
FetchException(FetchException.ARCHIVE_RESTART), SingleFileFetcher.this);
}
}
Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2006-01-27 20:39:29 UTC (rev 7955)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2006-01-27 21:14:20 UTC (rev 7956)
@@ -300,6 +300,8 @@
private synchronized void fail(InserterException e) {
Logger.minor(this, "Failing: "+e, e);
if(finished) return;
+ sfi.cancel();
+ metadataPutter.cancel();
finished = true;
cb.onFailure(e, this);
}
Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java
2006-01-27 20:39:29 UTC (rev 7955)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java
2006-01-27 21:14:20 UTC (rev 7956)
@@ -77,11 +77,10 @@
Vector segs = new Vector();
- FECCodec codec = FECCodec.getCodec(splitfileAlgorithm,
origDataBlocks.length);
-
// First split the data up
if(dataBlocks < segmentSize || segmentSize == -1) {
// Single segment
+ FECCodec codec = FECCodec.getCodec(splitfileAlgorithm,
origDataBlocks.length);
SplitFileInserterSegment onlySeg = new
SplitFileInserterSegment(this, codec, origDataBlocks, ctx, getCHKOnly, 0);
segs.add(onlySeg);
} else {
@@ -94,6 +93,7 @@
j = i;
for(int x=0;x<seg.length;x++)
if(seg[x] == null) throw new
NullPointerException("In splitIntoSegs: "+x+" is null of "+seg.length+" of
"+segNo);
+ FECCodec codec =
FECCodec.getCodec(splitfileAlgorithm, seg.length);
SplitFileInserterSegment s = new
SplitFileInserterSegment(this, codec, seg, ctx, getCHKOnly, segNo);
segs.add(s);
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-01-27 20:39:29 UTC (rev
7955)
+++ trunk/freenet/src/freenet/node/Version.java 2006-01-27 21:14:20 UTC (rev
7956)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 406;
+ private static final int buildNumber = 407;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 403;