Author: toad
Date: 2007-03-16 23:18:24 +0000 (Fri, 16 Mar 2007)
New Revision: 12165

Modified:
   trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
   trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
   trunk/freenet/src/freenet/client/async/SingleBlockInserter.java
Log:
Remove from underlying RGA on cancel() and on changing priorities

Modified: trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2007-03-16 23:16:52 UTC (rev 12164)
+++ trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2007-03-16 23:18:24 UTC (rev 12165)
@@ -8,6 +8,7 @@
 import freenet.keys.ClientSSK;
 import freenet.node.SendableGet;
 import freenet.support.Logger;
+import freenet.support.RandomGrabArray;

 public abstract class BaseSingleFileFetcher extends SendableGet {

@@ -75,8 +76,12 @@
                return ctx.ignoreStore;
        }

-       public synchronized void cancel() {
-               cancelled = true;
+       public void cancel() {
+               synchronized(this) {
+                       cancelled = true;
+               }
+               RandomGrabArray arr = getParentGrabArray();
+               if(arr != null) arr.remove(this);
        }

        public synchronized boolean isCancelled() {

Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2007-03-16 23:16:52 UTC (rev 12164)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2007-03-16 23:18:24 UTC (rev 12165)
@@ -5,7 +5,6 @@

 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;

 import freenet.config.InvalidConfigValueException;
 import freenet.config.SubConfig;
@@ -363,6 +362,8 @@
                        // Don't actually remove it as removing it is a rather 
slow operation
                        // It will be removed when removeFirst() reaches it.
                        //grabArray.remove(req);
+                       RandomGrabArray array = req.getParentGrabArray();
+                       if(array != null) array.remove(req);
                        innerRegister(req);
                }
                synchronized(starter) {

Modified: trunk/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleBlockInserter.java     
2007-03-16 23:16:52 UTC (rev 12164)
+++ trunk/freenet/src/freenet/client/async/SingleBlockInserter.java     
2007-03-16 23:18:24 UTC (rev 12165)
@@ -277,6 +277,8 @@
                        if(finished) return;
                        finished = true;
                }
+               RandomGrabArray arr = getParentGrabArray();
+               if(arr != null) arr.remove(this);
                cb.onFailure(new 
InserterException(InserterException.CANCELLED), this);
        }



Reply via email to