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;
}