Author: toad
Date: 2009-01-23 15:46:05 +0000 (Fri, 23 Jan 2009)
New Revision: 25248

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
   branches/db4o/freenet/src/freenet/node/RequestScheduler.java
   branches/db4o/freenet/src/freenet/node/RequestStarter.java
Log:
Prevent floods of already-in-starter-queue by taking the starter queue into 
account when deciding whether to reject a request.


Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2009-01-23 15:28:25 UTC (rev 25247)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2009-01-23 15:46:05 UTC (rev 25248)
@@ -480,12 +480,15 @@
                }
        }
        
-       public boolean isRunningRequest(SendableRequest request) {
+       public boolean isRunningOrQueuedRequest(SendableRequest request) {
                synchronized(starterQueue) {
                        for(int i=0;i<runningPersistentRequests.size();i++) {
                                if(runningPersistentRequests.get(i) == request)
                                        return true;
                        }
+                       for(PersistentChosenRequest req : starterQueue) {
+                               if(req.request == request) return true;
+                       }
                }
                return false;
        }

Modified: branches/db4o/freenet/src/freenet/node/RequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/RequestScheduler.java        
2009-01-23 15:28:25 UTC (rev 25247)
+++ branches/db4o/freenet/src/freenet/node/RequestScheduler.java        
2009-01-23 15:46:05 UTC (rev 25248)
@@ -69,7 +69,7 @@
 
        public void removeRunningRequest(SendableRequest request);
 
-       public abstract boolean isRunningRequest(SendableRequest request);
+       public abstract boolean isRunningOrQueuedRequest(SendableRequest 
request);
        
        public boolean hasFetchingKey(Key key);
 

Modified: branches/db4o/freenet/src/freenet/node/RequestStarter.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/RequestStarter.java  2009-01-23 
15:28:25 UTC (rev 25247)
+++ branches/db4o/freenet/src/freenet/node/RequestStarter.java  2009-01-23 
15:46:05 UTC (rev 25248)
@@ -242,7 +242,7 @@
        }
 
        public boolean exclude(RandomGrabArrayItem item, ObjectContainer 
container, ClientContext context) {
-               if(sched.isRunningRequest((SendableRequest)item)) {
+               if(sched.isRunningOrQueuedRequest((SendableRequest)item)) {
                        Logger.normal(this, "Excluding already-running request: 
"+item, new Exception("debug"));
                        return true;
                }

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

Reply via email to