Author: toad
Date: 2009-04-23 01:18:06 +0000 (Thu, 23 Apr 2009)
New Revision: 27216

Modified:
   trunk/freenet/src/freenet/clients/http/FProxyFetchInProgress.java
Log:
Fail once per request. This is the best that can be done without having 
explicit session IDs for downloads in progress.


Modified: trunk/freenet/src/freenet/clients/http/FProxyFetchInProgress.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FProxyFetchInProgress.java   
2009-04-22 15:43:42 UTC (rev 27215)
+++ trunk/freenet/src/freenet/clients/http/FProxyFetchInProgress.java   
2009-04-23 01:18:06 UTC (rev 27216)
@@ -84,6 +84,7 @@
        /** Fetch failed */
        private FetchException failed;
        private boolean hasWaited;
+       private boolean hasNotifiedFailure;
        /** Last time the fetch was accessed from the fproxy end */
        private long lastTouched;
        final FProxyFetchTracker tracker;
@@ -114,9 +115,10 @@
                FProxyFetchResult res;
                if(data != null)
                        res = new FProxyFetchResult(this, data, mimeType, 
timeStarted, goneToNetwork, getETA(), hasWaited);
-               else
+               else {
                        res = new FProxyFetchResult(this, mimeType, size, 
timeStarted, goneToNetwork,
                                        totalBlocks, requiredBlocks, 
fetchedBlocks, failedBlocks, fatallyFailedBlocks, finalizedBlocks, failed, 
getETA(), hasWaited);
+               }
                results.add(res);
                return res;
        }
@@ -287,6 +289,14 @@
        public synchronized boolean notFinishedOrFatallyFinished() {
                if(data == null && failed == null) return true;
                if(failed != null && failed.isFatal()) return true;
+               if(failed != null && !hasNotifiedFailure) {
+                       hasNotifiedFailure = true;
+                       return true;
+               }
                return false;
        }
+       
+       public synchronized boolean hasNotifiedFailure() {
+               return true;
+       }
 }

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

Reply via email to