Author: toad
Date: 2008-02-23 19:40:43 +0000 (Sat, 23 Feb 2008)
New Revision: 18137

Modified:
   trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
   trunk/freenet/src/freenet/node/FailureTable.java
   trunk/freenet/src/freenet/node/Node.java
Log:
Don't remove the key from the offeredKeys list-of-keys-to-fetch unless not only 
do we not want it, but also none of our neighbours wants it either.

Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-02-23 19:39:44 UTC (rev 18136)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-02-23 19:40:43 UTC (rev 18137)
@@ -536,7 +536,7 @@
                                }
                        }
                }
-               if(dropped && offeredKeys != null) {
+               if(dropped && offeredKeys != null && !node.peersWantKey(key)) {
                        for(int i=0;i<offeredKeys.length;i++)
                                offeredKeys[i].remove(key);
                }

Modified: trunk/freenet/src/freenet/node/FailureTable.java
===================================================================
--- trunk/freenet/src/freenet/node/FailureTable.java    2008-02-23 19:39:44 UTC 
(rev 18136)
+++ trunk/freenet/src/freenet/node/FailureTable.java    2008-02-23 19:40:43 UTC 
(rev 18137)
@@ -492,4 +492,13 @@

        }

+       public boolean peersWantKey(Key key) {
+               FailureTableEntry entry;
+               synchronized(this) {
+                       entry = (FailureTableEntry) entriesByKey.get(key);
+                       if(entry == null) return false; // Nobody cares
+               }
+               return entry.othersWant(null);
+       }
+
 }

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-02-23 19:39:44 UTC (rev 
18136)
+++ trunk/freenet/src/freenet/node/Node.java    2008-02-23 19:40:43 UTC (rev 
18137)
@@ -3266,4 +3266,8 @@
        public void setLocation(double loc) {
                lm.setLocation(loc);
        }
+
+       public boolean peersWantKey(Key key) {
+               return failureTable.peersWantKey(key);
+       }
 }


Reply via email to