Author: toad
Date: 2008-06-27 00:10:36 +0000 (Fri, 27 Jun 2008)
New Revision: 20806

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
haveBlock(): activate the block

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-06-26 23:57:20 UTC (rev 20805)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-06-27 00:10:36 UTC (rev 20806)
@@ -788,12 +788,16 @@
                this.fail(new FetchException(FetchException.INTERNAL_ERROR, 
"FEC failure: "+t, t), container, context);
        }

-       public boolean haveBlock(int blockNo) {
-               if(blockNo < dataBuckets.length)
-                       return dataBuckets[blockNo] != null && 
dataBuckets[blockNo].hasData();
-               else {
+       public boolean haveBlock(int blockNo, ObjectContainer container) {
+               if(blockNo < dataBuckets.length) {
+                       if(dataBuckets[blockNo] == null) return false;
+                       if(persistent) container.activate(dataBuckets[blockNo], 
1);
+                       return dataBuckets[blockNo].hasData();
+               } else {
                        blockNo -= dataBuckets.length;
-                       return checkBuckets[blockNo] != null && 
checkBuckets[blockNo].hasData();
+                       if(checkBuckets[blockNo] != null) return false;
+                       if(persistent) 
container.activate(checkBuckets[blockNo], 1);
+                       return checkBuckets[blockNo].hasData();
                }
        }
 }

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2008-06-26 23:57:20 UTC (rev 20805)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2008-06-27 00:10:36 UTC (rev 20806)
@@ -142,7 +142,7 @@
                                Key key = 
segment.getBlockNodeKey(((Integer)ret).intValue(), container);
                                if(key == null) {
                                        if(segment.isFinishing(container) || 
segment.isFinished(container)) return null;
-                                       
if(segment.haveBlock(((Integer)ret).intValue()))
+                                       
if(segment.haveBlock(((Integer)ret).intValue(), container))
                                                Logger.error(this, "Already 
have block "+ret+" but was in blockNums on "+this);
                                        else
                                                Logger.error(this, "Key is null 
for block "+ret+" for "+this);


Reply via email to