Author: toad
Date: 2006-11-10 17:27:12 +0000 (Fri, 10 Nov 2006)
New Revision: 10856
Modified:
trunk/freenet/src/freenet/client/async/ClientGetter.java
trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
trunk/freenet/src/freenet/client/async/USKRetriever.java
Log:
Never reset isFinal to true. (Fixes some possible problems in last commit).
Modified: trunk/freenet/src/freenet/client/async/ClientGetter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientGetter.java 2006-11-10
15:50:03 UTC (rev 10855)
+++ trunk/freenet/src/freenet/client/async/ClientGetter.java 2006-11-10
17:27:12 UTC (rev 10856)
@@ -73,7 +73,7 @@
}
currentState = SingleFileFetcher.create(this,
this, new ClientMetadata(),
uri, ctx, actx,
ctx.maxNonSplitfileRetries, 0, false, null, true,
- returnBucket);
+ returnBucket, true);
}
if(cancelled) cancel();
if(currentState != null)
Modified: trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
2006-11-10 15:50:03 UTC (rev 10855)
+++ trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
2006-11-10 17:27:12 UTC (rev 10856)
@@ -350,7 +350,7 @@
}
// **FIXME** Is key in the call to
SingleFileFetcher here supposed to be this.key or the same key used in the try
block above? MultiLevelMetadataCallback.onSuccess() below uses this.key, thus
the question
- SingleFileFetcher f = new
SingleFileFetcher(parent, rcb, clientMetadata, key, metaStrings, this.uri,
addedMetaStrings, ctx, actx, maxRetries, recursionLevel, false, token, true,
returnBucket, true);
+ SingleFileFetcher f = new
SingleFileFetcher(parent, rcb, clientMetadata, key, metaStrings, this.uri,
addedMetaStrings, ctx, actx, maxRetries, recursionLevel, false, token, true,
returnBucket, isFinal);
if((key instanceof ClientCHK) &&
!((ClientCHK)key).isMetadata())
rcb.onBlockSetFinished(this);
if(metadata.isCompressed()) {
@@ -603,16 +603,16 @@
return ctx.ignoreStore;
}
- public static ClientGetState create(BaseClientGetter parent,
GetCompletionCallback cb, ClientMetadata clientMetadata, FreenetURI uri,
FetcherContext ctx, ArchiveContext actx, int maxRetries, int recursionLevel,
boolean dontTellClientGet, Object token, boolean isEssential, Bucket
returnBucket) throws MalformedURLException, FetchException {
+ public static ClientGetState create(BaseClientGetter parent,
GetCompletionCallback cb, ClientMetadata clientMetadata, FreenetURI uri,
FetcherContext ctx, ArchiveContext actx, int maxRetries, int recursionLevel,
boolean dontTellClientGet, Object token, boolean isEssential, Bucket
returnBucket, boolean isFinal) throws MalformedURLException, FetchException {
BaseClientKey key = BaseClientKey.getBaseKey(uri);
if(key instanceof ClientKey)
- return new SingleFileFetcher(parent, cb,
clientMetadata, (ClientKey)key, uri.listMetaStrings(), uri, 0, ctx, actx,
maxRetries, recursionLevel, dontTellClientGet, token, isEssential,
returnBucket, true);
+ return new SingleFileFetcher(parent, cb,
clientMetadata, (ClientKey)key, uri.listMetaStrings(), uri, 0, ctx, actx,
maxRetries, recursionLevel, dontTellClientGet, token, isEssential,
returnBucket, isFinal);
else {
- return uskCreate(parent, cb, clientMetadata, (USK)key,
uri.listMetaStrings(), ctx, actx, maxRetries, recursionLevel,
dontTellClientGet, token, isEssential, returnBucket);
+ return uskCreate(parent, cb, clientMetadata, (USK)key,
uri.listMetaStrings(), ctx, actx, maxRetries, recursionLevel,
dontTellClientGet, token, isEssential, returnBucket, isFinal);
}
}
- private static ClientGetState uskCreate(BaseClientGetter parent,
GetCompletionCallback cb, ClientMetadata clientMetadata, USK usk, LinkedList
metaStrings, FetcherContext ctx, ArchiveContext actx, int maxRetries, int
recursionLevel, boolean dontTellClientGet, Object token, boolean isEssential,
Bucket returnBucket) throws FetchException {
+ private static ClientGetState uskCreate(BaseClientGetter parent,
GetCompletionCallback cb, ClientMetadata clientMetadata, USK usk, LinkedList
metaStrings, FetcherContext ctx, ArchiveContext actx, int maxRetries, int
recursionLevel, boolean dontTellClientGet, Object token, boolean isEssential,
Bucket returnBucket, boolean isFinal) throws FetchException {
if(usk.suggestedEdition >= 0) {
// Return the latest known version but at least
suggestedEdition.
long edition = ctx.uskManager.lookup(usk);
@@ -624,7 +624,7 @@
SingleFileFetcher sf =
new SingleFileFetcher(parent, myCB,
clientMetadata, usk.getSSK(usk.suggestedEdition),
metaStrings,
usk.getURI().addMetaStrings(metaStrings), 0, ctx, actx, maxRetries,
recursionLevel, dontTellClientGet,
- token, false,
returnBucket, true);
+ token, false,
returnBucket, isFinal);
// Background fetch
ctx.uskManager.startTemporaryBackgroundFetcher(usk);
return sf;
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2006-11-10 15:50:03 UTC (rev 10855)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2006-11-10 17:27:12 UTC (rev 10856)
@@ -376,7 +376,7 @@
if(dataBlockStatus[i] != null) {
Logger.error(this, "Scheduling twice?
dataBlockStatus["+i+"] = "+dataBlockStatus[i]);
} else dataBlockStatus[i] =
- (SingleFileFetcher)
SingleFileFetcher.create(parentFetcher.parent, this, null, dataBlocks[i],
blockFetchContext, archiveContext, blockFetchContext.maxNonSplitfileRetries,
recursionLevel, true, new Integer(i), true, null);
+ (SingleFileFetcher)
SingleFileFetcher.create(parentFetcher.parent, this, null, dataBlocks[i],
blockFetchContext, archiveContext, blockFetchContext.maxNonSplitfileRetries,
recursionLevel, true, new Integer(i), true, null, false);
}
for(int i=0;i<checkBlocks.length;i++) {
if(checkBlocks[i] == null) {
@@ -389,7 +389,7 @@
if(checkBlockStatus[i] != null) {
Logger.error(this, "Scheduling twice?
dataBlockStatus["+i+"] = "+checkBlockStatus[i]);
} else checkBlockStatus[i] =
- (SingleFileFetcher)
SingleFileFetcher.create(parentFetcher.parent, this, null, checkBlocks[i],
blockFetchContext, archiveContext, blockFetchContext.maxNonSplitfileRetries,
recursionLevel, true, new Integer(dataBlocks.length+i), false, null);
+ (SingleFileFetcher)
SingleFileFetcher.create(parentFetcher.parent, this, null, checkBlocks[i],
blockFetchContext, archiveContext, blockFetchContext.maxNonSplitfileRetries,
recursionLevel, true, new Integer(dataBlocks.length+i), false, null, false);
}
synchronized(this) {
createdFetchers = true;
Modified: trunk/freenet/src/freenet/client/async/USKRetriever.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKRetriever.java 2006-11-10
15:50:03 UTC (rev 10855)
+++ trunk/freenet/src/freenet/client/async/USKRetriever.java 2006-11-10
17:27:12 UTC (rev 10856)
@@ -38,7 +38,7 @@
try {
SingleFileFetcher getter =
(SingleFileFetcher)
SingleFileFetcher.create(this, this, new ClientMetadata(), uri, ctx, new
ArchiveContext(ctx.maxArchiveLevels),
- ctx.maxNonSplitfileRetries, 0,
true, key.copy(l), true, null);
+ ctx.maxNonSplitfileRetries, 0,
true, key.copy(l), true, null, false);
getter.schedule();
} catch (MalformedURLException e) {
Logger.error(this, "Impossible: "+e, e);