Author: toad
Date: 2008-02-04 23:33:13 +0000 (Mon, 04 Feb 2008)
New Revision: 17529

Modified:
   trunk/freenet/src/freenet/node/FailureTableEntry.java
Log:
Logging.
Don't send an offer to the same node as both requestor and requested.

Modified: trunk/freenet/src/freenet/node/FailureTableEntry.java
===================================================================
--- trunk/freenet/src/freenet/node/FailureTableEntry.java       2008-02-04 
23:30:44 UTC (rev 17528)
+++ trunk/freenet/src/freenet/node/FailureTableEntry.java       2008-02-04 
23:33:13 UTC (rev 17529)
@@ -4,6 +4,7 @@
 package freenet.node;

 import java.lang.ref.WeakReference;
+import java.util.HashSet;

 import freenet.keys.Key;
 import freenet.support.Logger;
@@ -306,6 +307,8 @@
        /** Offer this key to all the nodes that have requested it, and all the 
nodes it has been requested from.
         * Called after a) the data has been stored, and b) this entry has been 
removed from the FT */
        public void offer() {
+               HashSet set = new HashSet();
+               if(logMINOR) Logger.minor(this, "Sending offers to nodes which 
requested the key from us:");
                for(int i=0;i<requestorNodes.length;i++) {
                        WeakReference ref = requestorNodes[i];
                        if(ref == null) continue;
@@ -313,13 +316,16 @@
                        if(pn == null) continue;
                        if(pn.getBootID() != requestorBootIDs[i]) continue;
                        pn.offer(key);
+                       set.add(pn);
                }
+               if(logMINOR) Logger.minor(this, "Sending offers to nodes which 
we sent the key to:");
                for(int i=0;i<requestedNodes.length;i++) {
                        WeakReference ref = requestedNodes[i];
                        if(ref == null) continue;
                        PeerNode pn = (PeerNode) ref.get();
                        if(pn == null) continue;
                        if(pn.getBootID() != requestedBootIDs[i]) continue;
+                       if(set.contains(pn)) continue;
                        pn.offer(key);
                }
        }


Reply via email to