Author: toad
Date: 2007-09-21 18:06:01 +0000 (Fri, 21 Sep 2007)
New Revision: 15244

Modified:
   trunk/freenet/src/freenet/node/OpennetManager.java
   trunk/freenet/src/freenet/node/PeerManager.java
Log:
We weren't always adding newly added opennet peers to the opennet manager list. 
Result: bots, web interface etc peers could not be removed until they had had a 
successful request!

Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java  2007-09-21 18:00:02 UTC 
(rev 15243)
+++ trunk/freenet/src/freenet/node/OpennetManager.java  2007-09-21 18:06:01 UTC 
(rev 15244)
@@ -207,6 +207,16 @@
        /** When did we last offer our noderef to some other node? */
        private long timeLastOffered;

+       void forceAddPeer(PeerNode nodeToAddNow, boolean addAtLRU) {
+               synchronized(this) {
+                       if(addAtLRU)
+                               peersLRU.pushLeast(nodeToAddNow);
+                       else
+                               peersLRU.push(nodeToAddNow);
+               }
+               dropExcessPeers();
+       }
+       
        /**
         * Trim the peers list and possibly add a new node. Note that if we are 
not adding a new node,
         * we will only return true every MIN_TIME_BETWEEN_OFFERS, to prevent 
problems caused by many

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2007-09-21 18:00:02 UTC 
(rev 15243)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2007-09-21 18:06:01 UTC 
(rev 15244)
@@ -191,7 +191,7 @@
                        Logger.error(this, "Could not parse peer: "+e2+ '\n' 
+fs.toString(),e2);
                     continue;
                                }
-                addPeer(pn);
+                addPeer(pn, true);
                 gotSome = true;
             }
         } catch (EOFException e) {
@@ -208,6 +208,10 @@
        }

        public boolean addPeer(PeerNode pn) {
+               return addPeer(pn, false);
+       }
+       
+       boolean addPeer(PeerNode pn, boolean ignoreOpennet) {
                synchronized (this) {
                        for (int i = 0; i < myPeers.length; i++) {
                                if (myPeers[i].equals(pn)) {
@@ -223,6 +227,15 @@
                this.addPeerNodeStatus(pn.getPeerNodeStatus(), pn);
                pn.setPeerNodeStatus(System.currentTimeMillis());
                updatePMUserAlert();
+               if((!ignoreOpennet) && pn instanceof OpennetPeerNode) {
+                       OpennetManager opennet = node.getOpennet();
+                       if(opennet != null) {
+                               opennet.forceAddPeer(pn, true);
+                       } else {
+                               
+                       }
+               }
+               
                return true;
        }



Reply via email to