[freenet-cvs] r13130 - trunk/freenet/src/freenet/client/async

toad at freenetproject.org toad at freenetproject.org
Thu May 3 20:53:48 UTC 2007


Author: toad
Date: 2007-05-03 20:53:48 +0000 (Thu, 03 May 2007)
New Revision: 13130

Modified:
   trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
   trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
Log:
Don't add block, essential or not, when following multi-level metadata or fetching an archive.
That will happen after we've handled the new metadata.

Modified: trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java	2007-05-03 20:47:52 UTC (rev 13129)
+++ trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java	2007-05-03 20:53:48 UTC (rev 13130)
@@ -24,13 +24,15 @@
 public class SimpleSingleFileFetcher extends BaseSingleFileFetcher implements ClientGetState {
 
 	SimpleSingleFileFetcher(ClientKey key, int maxRetries, FetchContext ctx, ClientRequester parent, 
-			GetCompletionCallback rcb, boolean isEssential, long l) {
+			GetCompletionCallback rcb, boolean isEssential, boolean dontAdd, long l) {
 		super(key, maxRetries, ctx, parent);
 		this.rcb = rcb;
 		this.token = l;
-		parent.addBlock();
-		if(isEssential)
-			parent.addMustSucceedBlocks(1);
+		if(!dontAdd) {
+			parent.addBlock();
+			if(isEssential)
+				parent.addMustSucceedBlocks(1);
+		}
 	}
 
 	final GetCompletionCallback rcb;

Modified: trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileFetcher.java	2007-05-03 20:47:52 UTC (rev 13129)
+++ trunk/freenet/src/freenet/client/async/SingleFileFetcher.java	2007-05-03 20:53:48 UTC (rev 13130)
@@ -64,7 +64,7 @@
 			ArchiveContext actx, ArchiveStoreContext ah, int maxRetries, int recursionLevel,
 			boolean dontTellClientGet, long l, boolean isEssential,
 			Bucket returnBucket, boolean isFinal) throws FetchException {
-		super(key, maxRetries, ctx, parent, cb, isEssential, l);
+		super(key, maxRetries, ctx, parent, cb, isEssential, false, l);
 		logMINOR = Logger.shouldLog(Logger.MINOR, this);
 		if(logMINOR) Logger.minor(this, "Creating SingleFileFetcher for "+key+" from "+origURI+" meta="+metaStrings.toString(), new Exception("debug"));
 		this.isFinal = isFinal;
@@ -91,7 +91,7 @@
 	 * Used for things like slave fetchers for MultiLevelMetadata, therefore does not remember returnBucket,
 	 * metaStrings etc. */
 	public SingleFileFetcher(SingleFileFetcher fetcher, Metadata newMeta, GetCompletionCallback callback, FetchContext ctx2) throws FetchException {
-		super(fetcher.key, fetcher.maxRetries, ctx2, fetcher.parent, callback, false, fetcher.token);
+		super(fetcher.key, fetcher.maxRetries, ctx2, fetcher.parent, callback, false, true, fetcher.token);
 		logMINOR = Logger.shouldLog(Logger.MINOR, this);
 		if(logMINOR) Logger.minor(this, "Creating SingleFileFetcher for "+fetcher.key+" meta="+fetcher.metaStrings.toString(), new Exception("debug"));
 		this.returnBucket = null;
@@ -552,7 +552,7 @@
 		if((clientMetadata == null || clientMetadata.isTrivial()) && (!uri.hasMetaStrings()) &&
 				ctx.allowSplitfiles == false && ctx.followRedirects == false && 
 				returnBucket == null && key instanceof ClientKey)
-			return new SimpleSingleFileFetcher((ClientKey)key, maxRetries, ctx, requester, cb, isEssential, l);
+			return new SimpleSingleFileFetcher((ClientKey)key, maxRetries, ctx, requester, cb, isEssential, false, l);
 		if(key instanceof ClientKey)
 			return new SingleFileFetcher(requester, cb, clientMetadata, (ClientKey)key, uri.listMetaStrings(), uri, 0, ctx, actx, null, maxRetries, recursionLevel, dontTellClientGet, l, isEssential, returnBucket, isFinal);
 		else {




More information about the cvs mailing list