Author: toad
Date: 2006-08-04 00:13:58 +0000 (Fri, 04 Aug 2006)
New Revision: 9876

Modified:
   trunk/freenet/src/freenet/client/async/ClientGetter.java
   trunk/freenet/src/freenet/client/async/ClientPutter.java
   trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
   trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
   trunk/freenet/src/freenet/client/async/SingleFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   trunk/freenet/src/freenet/client/async/SplitFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
   trunk/freenet/src/freenet/client/async/USKFetcher.java
   trunk/freenet/src/freenet/client/async/USKManager.java
   trunk/freenet/src/freenet/clients/http/BookmarkManager.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/fcp/ClientGet.java
   trunk/freenet/src/freenet/node/fcp/ClientRequest.java
   trunk/freenet/src/freenet/support/io/FilenameGenerator.java
   trunk/freenet/src/freenet/support/io/TempBucketFactory.java
Log:
923: Fix several disk space leaks.

Modified: trunk/freenet/src/freenet/client/async/ClientGetter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientGetter.java    2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/ClientGetter.java    2006-08-04 
00:13:58 UTC (rev 9876)
@@ -125,13 +125,15 @@

        public void cancel() {
                Logger.minor(this, "Cancelling "+this);
+               super.cancel();
+               ClientGetState s;
                synchronized(this) {
-                       super.cancel();
-                       if(currentState != null) {
-                               Logger.minor(this, "Cancelling "+currentState);
-                               currentState.cancel();
-                       }
+                       s = currentState;
                }
+               if(s != null) {
+                       Logger.minor(this, "Cancelling "+currentState);
+                       s.cancel();
+               }
        }

        public synchronized boolean isFinished() {

Modified: trunk/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientPutter.java    2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/ClientPutter.java    2006-08-04 
00:13:58 UTC (rev 9876)
@@ -70,7 +70,7 @@
                                cancel = this.cancelled;
                                if(!cancel) {
                                        currentState =
-                                               new SingleFileInserter(this, 
this, new InsertBlock(data, cm, targetURI), isMetadata, ctx, false, getCHKOnly, 
false, null, false);
+                                               new SingleFileInserter(this, 
this, new InsertBlock(data, cm, targetURI), isMetadata, ctx, false, getCHKOnly, 
false, null, false, false);
                                }
                        }
                        if(cancel) {

Modified: trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2006-08-03 23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2006-08-04 00:13:58 UTC (rev 9876)
@@ -37,7 +37,7 @@
                        InsertBlock block = 
                                new InsertBlock(data, cm, 
FreenetURI.EMPTY_CHK_URI);
                        this.origSFI =
-                               new SingleFileInserter(this, this, block, 
false, ctx, false, getCHKOnly, true, null, false);
+                               new SingleFileInserter(this, this, block, 
false, ctx, false, getCHKOnly, true, null, false, false);
                        metadata = null;
                }

@@ -414,7 +414,7 @@
                        block = new InsertBlock(bucket, null, targetURI);
                try {
                        SingleFileInserter metadataInserter = 
-                               new SingleFileInserter(this, this, block, 
isMetadata, ctx, false, getCHKOnly, false, baseMetadata, 
insertAsArchiveManifest);
+                               new SingleFileInserter(this, this, block, 
isMetadata, ctx, false, getCHKOnly, false, baseMetadata, 
insertAsArchiveManifest, true);
                        Logger.minor(this, "Inserting main metadata: 
"+metadataInserter);
                        this.metadataPuttersByMetadata.put(baseMetadata, 
metadataInserter);
                        metadataInserter.start(null);
@@ -438,7 +438,7 @@

                                InsertBlock ib = new InsertBlock(b, null, 
FreenetURI.EMPTY_CHK_URI);
                                SingleFileInserter metadataInserter = 
-                                       new SingleFileInserter(this, this, ib, 
true, ctx, false, getCHKOnly, false, m, false);
+                                       new SingleFileInserter(this, this, ib, 
true, ctx, false, getCHKOnly, false, m, false, true);
                                Logger.minor(this, "Inserting subsidiary 
metadata: "+metadataInserter+" for "+m);
                                synchronized(this) {
                                        this.metadataPuttersByMetadata.put(m, 
metadataInserter);

Modified: trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileFetcher.java       
2006-08-03 23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/SingleFileFetcher.java       
2006-08-04 00:13:58 UTC (rev 9876)
@@ -572,7 +572,7 @@
                } else {
                        // Do a thorough, blocking search
                        USKFetcher fetcher =
-                               
ctx.uskManager.getFetcher(usk.copy(-usk.suggestedEdition), ctx, parent);
+                               
ctx.uskManager.getFetcher(usk.copy(-usk.suggestedEdition), ctx, parent, false);
                        if(isEssential)
                                parent.addMustSucceedBlocks(1);
                        fetcher.addCallback(new MyUSKFetcherCallback(parent, 
cb, clientMetadata, usk, metaStrings, ctx, actx, maxRetries, recursionLevel, 
dontTellClientGet, token, returnBucket));

Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-08-03 23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-08-04 00:13:58 UTC (rev 9876)
@@ -45,6 +45,7 @@
         * update our parent to point to us as current put-stage. */
        private final boolean reportMetadataOnly;
        public final Object token;
+       private final boolean freeData;

        /**
         * @param parent
@@ -56,11 +57,12 @@
         * @param getCHKOnly
         * @param reportMetadataOnly If true, don't insert the metadata, just 
report it.
         * @param insertAsArchiveManifest If true, insert the metadata as an 
archive manifest.
+        * @param freeData If true, free the data when possible.
         * @throws InserterException
         */
        SingleFileInserter(BaseClientPutter parent, PutCompletionCallback cb, 
InsertBlock block, 
                        boolean metadata, InserterContext ctx, boolean 
dontCompress, 
-                       boolean getCHKOnly, boolean reportMetadataOnly, Object 
token, boolean insertAsArchiveManifest) throws InserterException {
+                       boolean getCHKOnly, boolean reportMetadataOnly, Object 
token, boolean insertAsArchiveManifest, boolean freeData) throws 
InserterException {
                this.reportMetadataOnly = reportMetadataOnly;
                this.token = token;
                this.parent = parent;
@@ -70,6 +72,7 @@
                this.cb = cb;
                this.getCHKOnly = getCHKOnly;
                this.insertAsArchiveManifest = insertAsArchiveManifest;
+               this.freeData = freeData;
        }

        public void start(SimpleFieldSet fs) throws InserterException {
@@ -236,12 +239,12 @@
                // insert it. Then when the splitinserter has finished, and the
                // metadata insert has finished too, tell the master callback.
                if(reportMetadataOnly) {
-                       SplitFileInserter sfi = new SplitFileInserter(parent, 
cb, data, bestCodec, block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest);
+                       SplitFileInserter sfi = new SplitFileInserter(parent, 
cb, data, bestCodec, block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest, false);
                        cb.onTransition(this, sfi);
                        sfi.start();
                } else {
                        SplitHandler sh = new SplitHandler();
-                       SplitFileInserter sfi = new SplitFileInserter(parent, 
sh, data, bestCodec, block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest);
+                       SplitFileInserter sfi = new SplitFileInserter(parent, 
sh, data, bestCodec, block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest, false);
                        sh.sfi = sfi;
                        cb.onTransition(this, sh);
                        sfi.start();
@@ -408,7 +411,7 @@
                        InsertBlock newBlock = new InsertBlock(metadataBucket, 
null, block.desiredURI);
                        try {
                                synchronized(this) {
-                                       metadataPutter = new 
SingleFileInserter(parent, this, newBlock, true, ctx, false, getCHKOnly, false, 
token, false);
+                                       metadataPutter = new 
SingleFileInserter(parent, this, newBlock, true, ctx, false, getCHKOnly, false, 
token, false, true);
                                }
                                Logger.minor(this, "Putting metadata on 
"+metadataPutter+" from "+sfi+" ("+((SplitFileInserter)sfi).getLength());
                        } catch (InserterException e1) {

Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2006-08-03 23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2006-08-04 00:13:58 UTC (rev 9876)
@@ -218,41 +218,51 @@

                        // Now heal

-                       // Encode any check blocks we don't have
-                       if(codec != null) {
-                               try {
-                                       codec.encode(dataBuckets, checkBuckets, 
32768, fetcherContext.bucketFactory);
-                               } catch (IOException e) {
-                                       Logger.error(this, "Bucket error while 
healing: "+e, e);
-                               }
-                       }
+//                     // Encode any check blocks we don't have
+//                     if(codec != null) {
+//                             try {
+//                                     codec.encode(dataBuckets, checkBuckets, 
32768, fetcherContext.bucketFactory);
+//                             } catch (IOException e) {
+//                                     Logger.error(this, "Bucket error while 
healing: "+e, e);
+//                             }
+//                     }
+//                     
+//                     // Now insert *ALL* blocks on which we had at least one 
failure, and didn't eventually succeed
+//                     for(int i=0;i<dataBlockStatus.length;i++) {
+//                             if(dataBuckets[i].getData() != null) continue;
+//                             SingleFileFetcher fetcher = dataBlockStatus[i];
+//                             if(fetcher.getRetryCount() == 0) {
+//                                     // 80% chance of not inserting, if we 
never tried it
+//                                     if(fetcherContext.random.nextInt(5) == 
0) continue;
+//                             }
+//                             queueHeal(dataBuckets[i].getData());
+//                     }
+//                     for(int i=0;i<checkBlockStatus.length;i++) {
+//                             if(checkBuckets[i].getData() != null) continue;
+//                             SingleFileFetcher fetcher = checkBlockStatus[i];
+//                             if(fetcher.getRetryCount() == 0) {
+//                                     // 80% chance of not inserting, if we 
never tried it
+//                                     if(fetcherContext.random.nextInt(5) == 
0) continue;
+//                             }
+//                             queueHeal(checkBuckets[i].getData());
+//                     }

-                       // Now insert *ALL* blocks on which we had at least one 
failure, and didn't eventually succeed
-                       for(int i=0;i<dataBlockStatus.length;i++) {
-                               if(dataBuckets[i].getData() != null) continue;
-                               SingleFileFetcher fetcher = dataBlockStatus[i];
-                               if(fetcher.getRetryCount() == 0) {
-                                       // 80% chance of not inserting, if we 
never tried it
-                                       if(fetcherContext.random.nextInt(5) == 
0) continue;
+                       for(int i=0;i<dataBlocks.length;i++) {
+                               MinimalSplitfileBlock b = dataBuckets[i];
+                               if(b != null) {
+                                       Bucket d = b.getData();
+                                       if(d != null) d.free();
                                }
-                               queueHeal(dataBuckets[i].getData());
-                       }
-                       for(int i=0;i<checkBlockStatus.length;i++) {
-                               if(checkBuckets[i].getData() != null) continue;
-                               SingleFileFetcher fetcher = checkBlockStatus[i];
-                               if(fetcher.getRetryCount() == 0) {
-                                       // 80% chance of not inserting, if we 
never tried it
-                                       if(fetcherContext.random.nextInt(5) == 
0) continue;
-                               }
-                               queueHeal(checkBuckets[i].getData());
-                       }
-                       
-                       for(int i=0;i<dataBlocks.length;i++) {
                                dataBuckets[i] = null;
                                dataBlockStatus[i] = null;
                                dataBlocks[i] = null;
                        }
                        for(int i=0;i<checkBlocks.length;i++) {
+                               MinimalSplitfileBlock b = checkBuckets[i];
+                               if(b != null) {
+                                       Bucket d = b.getData();
+                                       if(d != null) d.free();
+                               }
                                checkBuckets[i] = null;
                                checkBlockStatus[i] = null;
                                checkBlocks[i] = null;
@@ -311,11 +321,23 @@
                        SingleFileFetcher f = dataBlockStatus[i];
                        if(f != null)
                                f.cancel();
+                       MinimalSplitfileBlock b = dataBuckets[i];
+                       if(b != null) {
+                               Bucket d = b.getData();
+                               if(d != null) d.free();
+                       }
+                       dataBuckets[i] = null;
                }
                for(int i=0;i<checkBlockStatus.length;i++) {
-                       SingleFileFetcher f = dataBlockStatus[i];
+                       SingleFileFetcher f = checkBlockStatus[i];
                        if(f != null)
                                f.cancel();
+                       MinimalSplitfileBlock b = checkBuckets[i];
+                       if(b != null) {
+                               Bucket d = b.getData();
+                               if(d != null) d.free();
+                       }
+                       checkBuckets[i] = null;
                }
                parentFetcher.segmentFinished(this);
        }

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-08-03 23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-08-04 00:13:58 UTC (rev 9876)
@@ -58,7 +58,7 @@
                return fs;
        }

-       public SplitFileInserter(BaseClientPutter put, PutCompletionCallback 
cb, Bucket data, Compressor bestCodec, ClientMetadata clientMetadata, 
InserterContext ctx, boolean getCHKOnly, boolean isMetadata, Object token, 
boolean insertAsArchiveManifest) throws InserterException {
+       public SplitFileInserter(BaseClientPutter put, PutCompletionCallback 
cb, Bucket data, Compressor bestCodec, ClientMetadata clientMetadata, 
InserterContext ctx, boolean getCHKOnly, boolean isMetadata, Object token, 
boolean insertAsArchiveManifest, boolean freeData) throws InserterException {
                this.parent = put;
                this.insertAsArchiveManifest = insertAsArchiveManifest;
                this.token = token;
@@ -74,6 +74,7 @@
                } catch (IOException e) {
                        throw new 
InserterException(InserterException.BUCKET_ERROR, e, null);
                }
+               if(freeData) data.free();
                countDataBlocks = dataBuckets.length;
                // Encoding is done by segments
                if(bestCodec == null)

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-08-03 23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-08-04 00:13:58 UTC (rev 9876)
@@ -545,11 +545,21 @@
                        SingleBlockInserter sbi = dataBlockInserters[i];
                        if(sbi != null)
                                sbi.cancel();
+                       Bucket d = dataBlocks[i];
+                       if(d != null) {
+                               d.free();
+                               dataBlocks[i] = null;
+                       }
                }
                for(int i=0;i<checkBlockInserters.length;i++) {
                        SingleBlockInserter sbi = checkBlockInserters[i];
                        if(sbi != null)
                                sbi.cancel();
+                       Bucket d = checkBlocks[i];
+                       if(d != null) {
+                               d.free();
+                               checkBlocks[i] = null;
+                       }
                }
                parent.segmentFinished(this);
        }

Modified: trunk/freenet/src/freenet/client/async/USKFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKFetcher.java      2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/USKFetcher.java      2006-08-04 
00:13:58 UTC (rev 9876)
@@ -181,14 +181,17 @@
        /** Keep going forever? */
        private final boolean backgroundPoll;

+       /** Keep the last fetched data? */
+       final boolean keepLastData;
+       
        private boolean started;

-       USKFetcher(USK origUSK, USKManager manager, FetcherContext ctx, 
ClientRequester parent, int minFailures, boolean pollForever) {
-               this(origUSK, manager, ctx, parent, minFailures, pollForever, 
DEFAULT_MAX_MIN_FAILURES);
+       USKFetcher(USK origUSK, USKManager manager, FetcherContext ctx, 
ClientRequester parent, int minFailures, boolean pollForever, boolean 
keepLastData) {
+               this(origUSK, manager, ctx, parent, minFailures, pollForever, 
DEFAULT_MAX_MIN_FAILURES, keepLastData);
        }

        // FIXME use this!
-       USKFetcher(USK origUSK, USKManager manager, FetcherContext ctx, 
ClientRequester parent, int minFailures, boolean pollForever, long 
maxProbeEditions) {
+       USKFetcher(USK origUSK, USKManager manager, FetcherContext ctx, 
ClientRequester parent, int minFailures, boolean pollForever, long 
maxProbeEditions, boolean keepLastData) {
                this.parent = parent;
                this.maxMinFailures = maxProbeEditions;
                this.origUSK = origUSK;
@@ -201,6 +204,7 @@
                lastAddedEdition = -1;
                this.ctx = ctx;
                this.backgroundPoll = pollForever;
+               this.keepLastData = keepLastData;
        }

        void onDNF(USKAttempt att) {
@@ -291,9 +295,13 @@
                        if(completed || cancelled) return;
                        if(curLatest >= lastEd) {
                                try {
-                                       this.lastRequestData = 
block.decode(ctx.bucketFactory, 1025 /* it's an SSK */, true);
-                                       this.lastCompressionCodec = 
block.getCompressionCodec();
-                                       this.lastWasMetadata = 
block.isMetadata();
+                                       Bucket data = lastRequestData = 
block.decode(ctx.bucketFactory, 1025 /* it's an SSK */, true);
+                                       lastCompressionCodec = 
block.getCompressionCodec();
+                                       lastWasMetadata = block.isMetadata();
+                                       if(keepLastData)
+                                               lastRequestData = data;
+                                       else
+                                               data.free();
                                } catch (KeyDecodeException e) {
                                        lastRequestData = null;
                                } catch (IOException e) {
@@ -461,6 +469,7 @@
        }

        public synchronized void freeLastData() {
+               if(lastRequestData == null) return;
                lastRequestData.free();
                lastRequestData = null;
        }

Modified: trunk/freenet/src/freenet/client/async/USKManager.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKManager.java      2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/client/async/USKManager.java      2006-08-04 
00:13:58 UTC (rev 9876)
@@ -77,23 +77,23 @@
        }

        public synchronized USKFetcher getFetcher(USK usk, FetcherContext ctx,
-                       ClientGetter parent) {
+                       ClientGetter parent, boolean keepLastData) {
                USKFetcher f = (USKFetcher) fetchersByUSK.get(usk);
                USK clear = usk.clearCopy();
                if(temporaryBackgroundFetchersLRU.contains(clear))
-               temporaryBackgroundFetchersLRU.push(clear);
+                       temporaryBackgroundFetchersLRU.push(clear);
                if(f != null) {
-                       if((f.parent.priorityClass == parent.priorityClass) && 
f.ctx.equals(ctx))
+                       if((f.parent.priorityClass == parent.priorityClass) && 
f.ctx.equals(ctx) && f.keepLastData == keepLastData)
                                return f;
                }
-               f = new USKFetcher(usk, this, ctx, parent, 3, false);
+               f = new USKFetcher(usk, this, ctx, parent, 3, false, 
keepLastData);
                fetchersByUSK.put(usk, f);
                return f;
        }

        public USKFetcher getFetcherForInsertDontSchedule(USK usk, short 
prioClass, USKFetcherCallback cb) {
                USKFetcher f = new USKFetcher(usk, this, 
backgroundFetchContext, 
-                               new USKFetcherWrapper(usk, prioClass, 
chkRequestScheduler, sskRequestScheduler), 3, false);
+                               new USKFetcherWrapper(usk, prioClass, 
chkRequestScheduler, sskRequestScheduler), 3, false, true);
                f.addCallback(cb);
                return f;
        }
@@ -104,7 +104,7 @@
                synchronized(this) {
                        USKFetcher f = (USKFetcher) 
backgroundFetchersByClearUSK.get(clear);
                        if(f == null) {
-                               f = new USKFetcher(usk, this, 
backgroundFetchContext, new USKFetcherWrapper(usk, 
RequestStarter.UPDATE_PRIORITY_CLASS, chkRequestScheduler, 
sskRequestScheduler), 10, true);
+                               f = new USKFetcher(usk, this, 
backgroundFetchContext, new USKFetcherWrapper(usk, 
RequestStarter.UPDATE_PRIORITY_CLASS, chkRequestScheduler, 
sskRequestScheduler), 10, true, false);
                                sched = f;
                                backgroundFetchersByClearUSK.put(clear, f);
                        }
@@ -175,7 +175,7 @@
                        if(runBackgroundFetch) {
                                USKFetcher f = (USKFetcher) 
backgroundFetchersByClearUSK.get(clear);
                                if(f == null) {
-                                       f = new USKFetcher(origUSK, this, 
backgroundFetchContext, new USKFetcherWrapper(origUSK, 
RequestStarter.UPDATE_PRIORITY_CLASS, chkRequestScheduler, 
sskRequestScheduler), 10, true);
+                                       f = new USKFetcher(origUSK, this, 
backgroundFetchContext, new USKFetcherWrapper(origUSK, 
RequestStarter.UPDATE_PRIORITY_CLASS, chkRequestScheduler, 
sskRequestScheduler), 10, true, false);
                                        sched = f;
                                        backgroundFetchersByClearUSK.put(clear, 
f);
                                }

Modified: trunk/freenet/src/freenet/clients/http/BookmarkManager.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/BookmarkManager.java 2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/clients/http/BookmarkManager.java 2006-08-04 
00:13:58 UTC (rev 9876)
@@ -145,7 +145,7 @@
                if (b.getKeyType().equals("USK")) {
                        try {
                                USK u = USK.create(b.key);
-                               this.node.uskManager.subscribe(u, this.uskcb, 
true);
+                               this.node.uskManager.unsubscribe(u, this.uskcb, 
true);
                        } catch (MalformedURLException mue) {

                        }

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-08-03 23:47:12 UTC (rev 
9875)
+++ trunk/freenet/src/freenet/node/Version.java 2006-08-04 00:13:58 UTC (rev 
9876)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 922;
+       private static final int buildNumber = 923;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 874;

Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java   2006-08-03 23:47:12 UTC 
(rev 9875)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java   2006-08-04 00:13:58 UTC 
(rev 9876)
@@ -95,7 +95,10 @@
                        targetFile = null;
                        tempFile = null;
                        try {
-                               ret = 
client.server.node.persistentTempBucketFactory.makeEncryptedBucket();
+                               if(persistenceType == PERSIST_FOREVER)
+                                       ret = 
client.server.node.persistentTempBucketFactory.makeEncryptedBucket();
+                               else
+                                       ret = fctx.bucketFactory.makeBucket(-1);
                        } catch (IOException e) {
                                onFailure(new 
FetchException(FetchException.BUCKET_ERROR), null);
                                getter = null;
@@ -149,7 +152,10 @@
                        targetFile = null;
                        tempFile = null;
                        try {
-                               ret = 
handler.server.node.persistentTempBucketFactory.makeEncryptedBucket();
+                               if(persistenceType == PERSIST_FOREVER)
+                                       ret = 
client.server.node.persistentTempBucketFactory.makeEncryptedBucket();
+                               else
+                                       ret = fctx.bucketFactory.makeBucket(-1);
                        } catch (IOException e) {
                                onFailure(new 
FetchException(FetchException.BUCKET_ERROR), null);
                                getter = null;
@@ -256,11 +262,6 @@
                // Otherwise ignore
        }

-       public void cancel() {
-               Logger.minor(this, "Cancelling "+this);
-               getter.cancel();
-       }
-
        public void onSuccess(FetchResult result, ClientGetter state) {
                Bucket data = result.asBucket();
                if(returnBucket != data)

Modified: trunk/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientRequest.java       2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/node/fcp/ClientRequest.java       2006-08-04 
00:13:58 UTC (rev 9876)
@@ -177,6 +177,7 @@
                ClientRequester cr = getClientRequest();
                // It might have been finished on startup.
                if(cr != null) cr.cancel();
+               freeData();
        }

        public boolean isPersistentForever() {

Modified: trunk/freenet/src/freenet/support/io/FilenameGenerator.java
===================================================================
--- trunk/freenet/src/freenet/support/io/FilenameGenerator.java 2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/support/io/FilenameGenerator.java 2006-08-04 
00:13:58 UTC (rev 9876)
@@ -5,6 +5,7 @@

 import freenet.crypt.RandomSource;
 import freenet.support.HexUtil;
+import freenet.support.Logger;

 public class FilenameGenerator {

@@ -53,7 +54,10 @@
                        random.nextBytes(randomFilename);
                        String filename = prefix + 
HexUtil.bytesToHex(randomFilename);
                        File ret = new File(tmpDir, filename);
-                       if(!ret.exists()) return ret;
+                       if(!ret.exists()) {
+                               Logger.minor(this, "Made random filename: 
"+ret, new Exception("debug"));
+                               return ret;
+                       }
                }
        }


Modified: trunk/freenet/src/freenet/support/io/TempBucketFactory.java
===================================================================
--- trunk/freenet/src/freenet/support/io/TempBucketFactory.java 2006-08-03 
23:47:12 UTC (rev 9875)
+++ trunk/freenet/src/freenet/support/io/TempBucketFactory.java 2006-08-04 
00:13:58 UTC (rev 9876)
@@ -68,17 +68,6 @@
                logDebug = Logger.shouldLog(Logger.DEBUG,this);
                File f = filenameGenerator.makeRandomFilename();

-               //if (logDebug)
-                       Logger.minor(
-                               this,
-                               "Temp bucket created: "
-                                       + f.getAbsolutePath()
-                                       + " with hook "
-                                       + hook
-                                       + " initial length "
-                                       + size,
-                               new Exception("creating TempBucket"));
-
                return new TempFileBucket(f, hook, size, increment, factor);
        }



Reply via email to