Author: toad
Date: 2008-10-29 19:22:31 +0000 (Wed, 29 Oct 2008)
New Revision: 23176

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Don't decode if we don't need to. Hopefully fixes some NPEs as well as speeding 
up the case where the data is already in store.


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-10-29 19:10:27 UTC (rev 23175)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-10-29 19:22:31 UTC (rev 23176)
@@ -318,6 +318,23 @@
                        for(int i=0;i<checkBuckets.length;i++)
                                container.activate(checkBuckets[i], 1);
                }
+               int data = 0;
+               for(int i=0;i<dataBuckets.length;i++) {
+                       if(dataBuckets[i].getData() != null) {
+                               data++;
+                       }
+               }
+               if(data == dataBuckets.length) {
+                       if(logMINOR)
+                               Logger.minor(this, "Already decoded");
+                       if(persistent) {
+                               for(int i=0;i<dataBuckets.length;i++) {
+                                       
container.activate(dataBuckets[i].getData(), 1);
+                               }
+                       }
+                       onDecodedSegment(container, context, null, null, null, 
dataBuckets, checkBuckets);
+                       return;
+               }

                if(splitfileType != Metadata.SPLITFILE_NONREDUNDANT) {
                        FECQueue queue = context.fecQueue;
@@ -376,8 +393,6 @@
                        }
                        if(isCollectingBinaryBlob(parent)) {
                                for(int i=0;i<dataBuckets.length;i++) {
-                                       if(persistent)
-                                               
container.activate(dataBlockStatus[i], 1);
                                        Bucket data = 
dataBlockStatus[i].getData();
                                        try {
                                                maybeAddToBinaryBlob(data, i, 
false, container, context);


Reply via email to