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;


Reply via email to