Author: nextgens
Date: 2007-10-20 11:42:17 +0000 (Sat, 20 Oct 2007)
New Revision: 15452

Modified:
   trunk/freenet/src/freenet/node/OpennetManager.java
Log:
Make the number of opennet peers variant depending on how many darknet peers we 
have. Maybe we should average it over a period of time instead.

Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java  2007-10-20 11:32:01 UTC 
(rev 15451)
+++ trunk/freenet/src/freenet/node/OpennetManager.java  2007-10-20 11:42:17 UTC 
(rev 15452)
@@ -248,7 +248,7 @@
                                        Logger.minor(this, "Opennet peer 
already present in LRU: "+nodeToAddNow);
                                return true;
                        }
-                       if(peersLRU.size() < MAX_PEERS) {
+                       if(peersLRU.size() < getNumberOfConnectedPeersToAim()) {
                                if(nodeToAddNow != null) {
                                        if(logMINOR) Logger.minor(this, "Added 
opennet peer "+nodeToAddNow+" as opennet peers list not full");
                                        if(addAtLRU)
@@ -272,12 +272,13 @@
                boolean canAdd = true;
                Vector dropList = new Vector();
                synchronized(this) {
+                       int maxPeers = getNumberOfConnectedPeersToAim();
                        boolean hasDisconnected = false;
-                       if(peersLRU.size() == MAX_PEERS && nodeToAddNow == 
null) {
+                       if(peersLRU.size() == maxPeers && nodeToAddNow == null) 
{
                                PeerNode toDrop = peerToDrop(true);
                                if(toDrop != null)
                                        hasDisconnected = !toDrop.isConnected();
-                       } else while(peersLRU.size() > MAX_PEERS - 
(nodeToAddNow == null ? 0 : 1)) {
+                       } else while(peersLRU.size() > maxPeers - (nodeToAddNow 
== null ? 0 : 1)) {
                                PeerNode toDrop;
                                // can drop peers which are over the limit
                                toDrop = peerToDrop(noDisconnect || 
nodeToAddNow == null);
@@ -335,7 +336,7 @@
        }

        private void dropExcessPeers() {
-               while(peersLRU.size() > MAX_PEERS) {
+               while(peersLRU.size() > getNumberOfConnectedPeersToAim()) {
                        if(logMINOR)
                                Logger.minor(this, "Dropping opennet peers: 
currently "+peersLRU.size());
                        PeerNode toDrop;
@@ -349,7 +350,7 @@
        }

        synchronized PeerNode peerToDrop(boolean noDisconnect) {
-               if(peersLRU.size() < MAX_PEERS) {
+               if(peersLRU.size() < getNumberOfConnectedPeersToAim()) {
                        // Don't drop any peers
                        return null;
                } else {
@@ -442,4 +443,8 @@
                oldPeers.remove(source);
        }

+       protected int getNumberOfConnectedPeersToAim() {
+               return MAX_PEERS - node.peers.quickCountConnectedPeers();
+       }
+
 }


Reply via email to