Author: nextgens
Date: 2006-05-21 07:02:37 +0000 (Sun, 21 May 2006)
New Revision: 8813

Modified:
   trunk/freenet/src/freenet/node/ARKFetcher.java
Log:
maybe fix a synchronization problem in ARKFetcher

Modified: trunk/freenet/src/freenet/node/ARKFetcher.java
===================================================================
--- trunk/freenet/src/freenet/node/ARKFetcher.java      2006-05-21 04:27:09 UTC 
(rev 8812)
+++ trunk/freenet/src/freenet/node/ARKFetcher.java      2006-05-21 07:02:37 UTC 
(rev 8813)
@@ -96,8 +96,10 @@
                // Fetcher context specifies an upper bound on size.
                backoff = MIN_BACKOFF;
                if(isFetching) {
-                       node.removeARKFetcher(identity,this);
-                       isFetching = false;
+                       synchronized(this){
+                               node.removeARKFetcher(identity,this);
+                               isFetching = false;
+                       }
                }
                ArrayBucket bucket = (ArrayBucket) result.asBucket();
                byte[] data = bucket.toByteArray();
@@ -121,8 +123,10 @@
        public void onFailure(FetchException e, ClientGetter state) {
                Logger.minor(this, "Failed to fetch ARK for "+peer+" : "+e, e);
                if(isFetching) {
-                       node.removeARKFetcher(identity,this);
-                       isFetching = false;
+                       synchronized(this){
+                               node.removeARKFetcher(identity,this);
+                               isFetching = false;
+                       }
                }
                // If it's a redirect, follow the redirect and update the ARK.
                // If it's any other error, wait a while then retry.


Reply via email to