Author: toad
Date: 2007-07-24 16:34:48 +0000 (Tue, 24 Jul 2007)
New Revision: 14303

Modified:
   trunk/freenet/src/freenet/node/fcp/ClientGet.java
Log:
Better handling of wierd corner case

Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java   2007-07-24 16:06:15 UTC 
(rev 14302)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java   2007-07-24 16:34:48 UTC 
(rev 14303)
@@ -335,6 +335,13 @@
                Logger.minor(this, "Succeeded: "+identifier);
                Bucket data = result.asBucket();
                if(returnBucket != data && !binaryBlob) {
+                       synchronized(this) {
+                               if(finished) {
+                                       Logger.error(this, "Already finished 
but onSuccess() for "+this+" data = "+data, new Exception("debug"));
+                                       result.asBucket().free();
+                                       return; // Already failed - bucket 
error maybe??
+                               }
+                       }
                        Logger.error(this, "returnBucket = "+returnBucket+" but 
onSuccess() data = "+data);
                        // Caller guarantees that data == returnBucket
                        onFailure(new 
FetchException(FetchException.INTERNAL_ERROR, "Data != returnBucket"), null);


Reply via email to