Author: toad
Date: 2009-04-18 15:23:10 +0000 (Sat, 18 Apr 2009)
New Revision: 26976

Modified:
   trunk/freenet/src/freenet/client/async/USKManager.java
Log:
Content fetch would keep running forever: run a USKFetcher for the last known 
slot, when it decides that it is still the last known slot, fetch it, which 
then starts another USKFetcher which again fetches it. Do not fetch the content 
unless it is a higher edition than the last known good editio!


Modified: trunk/freenet/src/freenet/client/async/USKManager.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKManager.java      2009-04-18 
14:46:55 UTC (rev 26975)
+++ trunk/freenet/src/freenet/client/async/USKManager.java      2009-04-18 
15:23:10 UTC (rev 26976)
@@ -144,9 +144,9 @@
                                sched = f;
                                temporaryBackgroundFetchersLRU.push(clear, f);
                        }
-                       if(prefetchContent)
+                       if(prefetchContent) {
+                               final long min = lookupKnownGood(usk);
                                f.addCallback(new USKFetcherCallback() {
-
                                        public void onCancelled(ObjectContainer 
container, ClientContext context) {
                                                // Ok
                                        }
@@ -156,6 +156,7 @@
                                        }
 
                                        public void onFoundEdition(long l, USK 
key, ObjectContainer container, ClientContext context, boolean metadata, short 
codec, byte[] data, boolean newKnownGood, boolean newSlotToo) {
+                                               if(l <= min) return;
                                                FreenetURI uri = 
key.copy(l).getURI();
                                                final ClientGetter get = new 
ClientGetter(new NullClientCallback(), uri, new FetchContext(fctx, 
FetchContext.IDENTICAL_MASK, false, null), 
RequestStarter.UPDATE_PRIORITY_CLASS, USKManager.this, new NullBucket(), null);
                                                try {
@@ -175,6 +176,7 @@
                                        
                                        
                                });
+                       }
                        temporaryBackgroundFetchersLRU.push(clear, f);
                        while(temporaryBackgroundFetchersLRU.size() > 
NodeClientCore.maxBackgroundUSKFetchers) {
                                USKFetcher fetcher = 
temporaryBackgroundFetchersLRU.popValue();

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to