Author: toad
Date: 2008-12-06 15:47:00 +0000 (Sat, 06 Dec 2008)
New Revision: 24095
Modified:
trunk/freenet/src/freenet/node/OpennetManager.java
trunk/freenet/src/freenet/node/OpennetPeerNode.java
Log:
Don't add to the old-opennet-peers list unless the node was droppable (ignoring
connection issues), and wasn't dropped.
Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java 2008-12-06 15:24:00 UTC
(rev 24094)
+++ trunk/freenet/src/freenet/node/OpennetManager.java 2008-12-06 15:47:00 UTC
(rev 24095)
@@ -424,11 +424,12 @@
for(int i=0;i<peers.length;i++) {
OpennetPeerNode pn = peers[i];
if(pn == null) continue;
- if(!pn.isDroppable()) continue;
+ if(!pn.isDroppable(false)) continue;
// LOCKING: Always take the OpennetManager lock
first
if(!pn.isConnected()) {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Possibly
dropping opennet peer "+pn+" as is disconnected");
+ pn.setWasDropped();
return pn;
}
}
@@ -438,10 +439,11 @@
for(int i=0;i<peers.length;i++) {
OpennetPeerNode pn = peers[i];
if(pn == null) continue;
- if(!pn.isDroppable()) continue;
+ if(!pn.isDroppable(false)) continue;
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Possibly dropping
opennet peer "+pn+" "+
(System.currentTimeMillis() - timeLastDropped)+" ms since last dropped peer");
+ pn.setWasDropped();
return pn;
}
}
@@ -467,9 +469,11 @@
public void onRemove(OpennetPeerNode pn) {
synchronized (this) {
peersLRU.remove(pn);
- oldPeers.push(pn);
- while (oldPeers.size() > MAX_OLD_PEERS)
- oldPeers.pop();
+ if(pn.isDroppable(true) && !pn.grabWasDropped()) {
+ oldPeers.push(pn);
+ while (oldPeers.size() > MAX_OLD_PEERS)
+ oldPeers.pop();
+ }
}
}
Modified: trunk/freenet/src/freenet/node/OpennetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetPeerNode.java 2008-12-06 15:24:00 UTC
(rev 24094)
+++ trunk/freenet/src/freenet/node/OpennetPeerNode.java 2008-12-06 15:47:00 UTC
(rev 24095)
@@ -35,13 +35,14 @@
return true;
}
- public boolean isDroppable() {
+ public boolean isDroppable(boolean ignoreDisconnect) {
long now = System.currentTimeMillis();
if(now - getPeerAddedTime() < OpennetManager.DROP_MIN_AGE)
return false; // New node
if(now - node.usm.getStartedTime() <
OpennetManager.DROP_STARTUP_DELAY)
return false; // Give them time to connect after we
startup
int status = getPeerNodeStatus();
+ if(!ignoreDisconnect) {
synchronized(this) {
if((status ==
PeerManager.PEER_NODE_STATUS_DISCONNECTED) && (!super.neverConnected()) &&
now - timeLastDisconnect <
OpennetManager.DROP_DISCONNECT_DELAY &&
@@ -50,6 +51,7 @@
return false;
}
}
+ }
return true;
}
@@ -119,4 +121,20 @@
opennet.crypto.socket.getAddressTracker().setPresumedGuiltyAt(System.currentTimeMillis()+60*60*1000);
}
+ private boolean wasDropped;
+
+ synchronized void setWasDropped() {
+ wasDropped = true;
+ }
+
+ synchronized boolean wasDropped() {
+ return wasDropped;
+ }
+
+ synchronized boolean grabWasDropped() {
+ boolean ret = wasDropped;
+ wasDropped = false;
+ return ret;
+ }
+
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs