Author: toad
Date: 2008-12-09 13:53:19 +0000 (Tue, 09 Dec 2008)
New Revision: 24136

Modified:
   trunk/freenet/src/freenet/node/OpennetManager.java
Log:
Never go over the limit


Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java  2008-12-09 13:53:03 UTC 
(rev 24135)
+++ trunk/freenet/src/freenet/node/OpennetManager.java  2008-12-09 13:53:19 UTC 
(rev 24136)
@@ -331,13 +331,13 @@
                        // If we have dropped a disconnected peer, then the 
inter-peer offer cooldown doesn't apply: we can accept immediately.
                        boolean hasDisconnected = false;
                        if(peersLRU.size() == maxPeers && nodeToAddNow == null) 
{
-                               PeerNode toDrop = peerToDrop(true);
+                               PeerNode toDrop = peerToDrop(true, false);
                                if(toDrop != null)
                                        hasDisconnected = !toDrop.isConnected();
                        } else while(peersLRU.size() > maxPeers - (nodeToAddNow 
== null ? 0 : 1)) {
                                OpennetPeerNode toDrop;
                                // can drop peers which are over the limit
-                               toDrop = peerToDrop(noDisconnect || 
nodeToAddNow == null);
+                               toDrop = peerToDrop(noDisconnect || 
nodeToAddNow == null, false);
                                if(toDrop == null) {
                                        if(logMINOR)
                                                Logger.minor(this, "No more 
peers to drop, still "+peersLRU.size()+" peers, cannot accept 
peer"+(nodeToAddNow == null ? "" : nodeToAddNow.toString()));
@@ -405,7 +405,7 @@
                        if(logMINOR)
                                Logger.minor(this, "Dropping opennet peers: 
currently "+peersLRU.size());
                        PeerNode toDrop;
-                       toDrop = peerToDrop(false);
+                       toDrop = peerToDrop(false, true);
                        if(toDrop == null) return;
                        peersLRU.remove(toDrop);
                        if(logMINOR)
@@ -414,7 +414,7 @@
                }
        }
        
-       synchronized OpennetPeerNode peerToDrop(boolean noDisconnect) {
+       synchronized OpennetPeerNode peerToDrop(boolean noDisconnect, boolean 
force) {
                if(peersLRU.size() < getNumberOfConnectedPeersToAim()) {
                        // Don't drop any peers
                        return null;
@@ -439,7 +439,7 @@
                        for(int i=0;i<peers.length;i++) {
                                OpennetPeerNode pn = peers[i];
                                if(pn == null) continue;
-                               if(!pn.isDroppable(false)) continue;
+                               if((!pn.isDroppable(false)) && !force) continue;
                                if(Logger.shouldLog(Logger.MINOR, this))
                                        Logger.minor(this, "Possibly dropping 
opennet peer "+pn+" "+
                                                        
(System.currentTimeMillis() - timeLastDropped)+" ms since last dropped peer");

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to