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"));


Reply via email to