Author: toad
Date: 2008-12-09 23:56:08 +0000 (Tue, 09 Dec 2008)
New Revision: 24158

Modified:
   trunk/freenet/src/freenet/client/async/USKCallback.java
   trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
   trunk/freenet/src/freenet/node/Announcer.java
   trunk/freenet/src/freenet/node/DarknetPeerNode.java
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
   trunk/freenet/src/freenet/node/KeyTracker.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeDispatcher.java
   trunk/freenet/src/freenet/node/OpennetManager.java
   trunk/freenet/src/freenet/node/OpennetPeerNode.java
   trunk/freenet/src/freenet/node/OutgoingPacketMangler.java
   trunk/freenet/src/freenet/node/PacketSender.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/PeerNode.java
   trunk/freenet/src/freenet/node/RequestHandler.java
   trunk/freenet/src/freenet/node/SeedClientPeerNode.java
   trunk/freenet/src/freenet/node/SeedServerPeerNode.java
   trunk/freenet/test/freenet/support/io/MockInputStream.java
Log:
Temporarily revert back to 1191 release.


Modified: trunk/freenet/src/freenet/client/async/USKCallback.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKCallback.java     2008-12-09 
23:55:18 UTC (rev 24157)
+++ trunk/freenet/src/freenet/client/async/USKCallback.java     2008-12-09 
23:56:08 UTC (rev 24158)
@@ -11,14 +11,9 @@
  */
 public interface USKCallback {
 
-       /**
-        * Found the latest edition.
-        * 
-        * @param l
-        *            The edition number.
-        * @param key
-        *            A copy of the key with new edition set
-        */
+       /** Found the latest edition.
+        * @param l The edition number.
+        * @param key The key. */
        void onFoundEdition(long l, USK key);
        
        /**

Modified: 
trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
===================================================================
--- trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat     
2008-12-09 23:55:18 UTC (rev 24157)
+++ trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat     
2008-12-09 23:56:08 UTC (rev 24158)
@@ -7,26 +7,26 @@
 BookmarkCategory0.Content.Bookmark0.Name=The Ultimate FreeNet Index
 BookmarkCategory0.Content.Bookmark0.Description=A new one-page index with a 
menu including categories
 BookmarkCategory0.Content.Bookmark0.hasAnActivelink=true
[EMAIL 
PROTECTED],3dAcn4fX2LyxO6uCnWFTx-2HKZ89uruurcKwLSCxbZ4,AQACAAE/Ultimate-Freenet-Index/37/
[EMAIL 
PROTECTED],3dAcn4fX2LyxO6uCnWFTx-2HKZ89uruurcKwLSCxbZ4,AQACAAE/Ultimate-Freenet-Index/35/
 BookmarkCategory0.Content.Bookmark3.Name=Index des sites Français
 BookmarkCategory0.Content.Bookmark3.Description=A small French index with 
descriptions
 BookmarkCategory0.Content.Bookmark3.hasAnActivelink=true
[EMAIL 
PROTECTED],pOloLxnKWM~AL24iDMHOAvTvCqMlB-p2BO9zK96TOZA,AQACAAE/index_fr/77/
[EMAIL 
PROTECTED],pOloLxnKWM~AL24iDMHOAvTvCqMlB-p2BO9zK96TOZA,AQACAAE/index_fr/73/
 BookmarkCategory0.Content.Bookmark2.Name=Freenet Activelink Index (SLOW: 
graphical index, preloads all the sites, so takes *ages* to load)
 BookmarkCategory0.Content.Bookmark2.hasAnActivelink=true
 BookmarkCategory0.Content.Bookmark2.Description=A graphical freenet index 
(this will take a long time to load as it preloads the sites)
[EMAIL 
PROTECTED],xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index/95/
[EMAIL 
PROTECTED],xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index/93/
 BookmarkCategory0.Content.Bookmark1.Name=Freenet Activelink Index Text Version 
(a quick-loading non-graphical index site, no porn)
 BookmarkCategory0.Content.Bookmark1.hasAnActivelink=true
 BookmarkCategory0.Content.Bookmark1.Description=Text version of the Activelink 
Index
[EMAIL 
PROTECTED],xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/56/
[EMAIL 
PROTECTED],xTFOV9ddCQQk6vQ6G~jfL6IzRUgmfMcZJ6nuySu~NUc,AQACAAE/activelink-index-text/54/
 BookmarkCategory1.Name=Freenet related software and documentation
 BookmarkCategory1.Content.BookmarkCategory=0
 BookmarkCategory1.Content.Bookmark=5
 BookmarkCategory1.Content.Bookmark0.Name=Freenet Message System
 BookmarkCategory1.Content.Bookmark0.Description=The official freesite of FMS, 
a spam resistant message board system for Freenet
 BookmarkCategory1.Content.Bookmark0.hasAnActivelink=true
[EMAIL PROTECTED],~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/85/
[EMAIL PROTECTED],~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/84/
 BookmarkCategory1.Content.Bookmark1.Name=Freemail
 BookmarkCategory1.Content.Bookmark1.Description=The official site for Freemail 
- email over Freenet
 BookmarkCategory1.Content.Bookmark1.hasAnActivelink=true
@@ -39,7 +39,7 @@
 BookmarkCategory1.Content.Bookmark3.Name=Freesite HOWTO
 BookmarkCategory1.Content.Bookmark3.Description=A more detailed explanation of 
publishing freesites
 BookmarkCategory1.Content.Bookmark3.hasAnActivelink=true
[EMAIL PROTECTED],9T20t3xoG-dQfMO94LGOl9AxRTkaz~TykFY-voqaTQI,AQACAAE/FAFS/44/
[EMAIL PROTECTED],9T20t3xoG-dQfMO94LGOl9AxRTkaz~TykFY-voqaTQI,AQACAAE/FAFS/4/
 BookmarkCategory1.Content.Bookmark4.hasAnActivelink=true
 BookmarkCategory1.Content.Bookmark4.Name=The Freenet Applications Freesite
 BookmarkCategory1.Content.Bookmark4.Description=Various links to Freenet 
applications, and instructions for using them

Modified: trunk/freenet/src/freenet/node/Announcer.java
===================================================================
--- trunk/freenet/src/freenet/node/Announcer.java       2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/Announcer.java       2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -331,7 +331,7 @@
                                        }
                                        if(enoughPeers()) {
                                                for(SeedServerPeerNode pn : 
node.peers.getConnectedSeedServerPeersVector(null)) {
-                                                       
node.peers.disconnect(pn, true, true, false);
+                                                       
node.peers.disconnect(pn, true, true);
                                                }
                                                // Re-check every minute. 
Something bad might happen (e.g. cpu starvation), causing us to have to reseed.
                                                
node.getTicker().queueTimedJob(new Runnable() {
@@ -511,7 +511,7 @@
                                // If it takes more than COOLING_OFF_PERIOD to 
disconnect, we might not be able to reannounce to this
                                // node. However, we can't reannounce to it 
anyway until announcedTo is cleared, which probably will
                                // be more than that period in the future.
-                               node.peers.disconnect(seed, true, false, false);
+                               node.peers.disconnect(seed, true, false);
                                System.out.println("Announcement to 
"+seed.userToString()+" completed.");
                                if(announceNow)
                                        maybeSendAnnouncement();

Modified: trunk/freenet/src/freenet/node/DarknetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/DarknetPeerNode.java 2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/DarknetPeerNode.java 2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -16,7 +16,6 @@
 import java.util.LinkedHashSet;
 
 import freenet.client.DefaultMIMETypes;
-import freenet.crypt.BlockCipher;
 import freenet.io.comm.DMT;
 import freenet.io.comm.DisconnectedException;
 import freenet.io.comm.FreenetInetAddress;
@@ -773,7 +772,6 @@
         */
        @Override
        protected void onConnect() {
-               super.onConnect();
                sendQueuedN2NMs();
        }
 
@@ -1598,5 +1596,4 @@
        public final boolean shouldDisconnectAndRemoveNow() {
                return false;
        }
-       
 }

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java        2008-12-09 
23:55:18 UTC (rev 24157)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java        2008-12-09 
23:56:08 UTC (rev 24158)
@@ -303,7 +303,7 @@
                OpennetManager opennet = node.getOpennet();
                if(opennet != null) {
                        // Try old opennet connections.
-                       if(opennet.wantPeer(null, false, true, true)) {
+                       if(opennet.wantPeer(null, false, true)) {
                                // We want a peer.
                                // Try old connections.
                                PeerNode[] oldPeers = opennet.getOldPeers();
@@ -1201,14 +1201,9 @@
                                Logger.normal(this, "Dumping incoming 
old-opennet peer as opennet just turned off: "+pn+".");
                                return;
                        }
-                       /* When an old-opennet-peer connects, add it at the top 
of the LRU, so that it isn't
-                        * immediately dropped when there is no droppable peer 
to drop. If it was dropped 
-                        * from the bottom of the LRU list, we would not have 
added it to the LRU; so it was
-                        * somewhere in the middle. */
-                       if(!opennet.wantPeer(pn, false, false, true)) {
+                       if(!opennet.wantPeer(pn, true, false)) {
                                Logger.normal(this, "No longer want peer "+pn+" 
- dumping it after connecting");
                                dontWant = true;
-                               opennet.purgeOldOpennetPeer(pn);
                        }
                        // wantPeer will call node.peers.addPeer(), we don't 
have to.
                }
@@ -1222,7 +1217,7 @@
                                        c, Ke, Ka, authenticator, hisRef, pn, 
replyTo, unknownInitiator, setupType, newTrackerID, newTrackerID == trackerID);
                        
                        if(dontWant)
-                               node.peers.disconnect(pn, true, false, true); 
// Let it connect then tell it to remove it.
+                               node.peers.disconnect(pn, true, false); // Let 
it connect then tell it to remove it.
                        else
                                pn.maybeSendInitialMessages();
                } else {
@@ -1422,14 +1417,9 @@
                                Logger.normal(this, "Dumping incoming 
old-opennet peer as opennet just turned off: "+pn+".");
                                return true;
                        }
-                       /* When an old-opennet-peer connects, add it at the top 
of the LRU, so that it isn't
-                        * immediately dropped when there is no droppable peer 
to drop. If it was dropped 
-                        * from the bottom of the LRU list, we would not have 
added it to the LRU; so it was
-                        * somewhere in the middle. */
-                       if(!opennet.wantPeer(pn, false, false, true)) {
+                       if(!opennet.wantPeer(pn, true, false)) {
                                Logger.normal(this, "No longer want peer "+pn+" 
- dumping it after connecting");
                                dontWant = true;
-                               opennet.purgeOldOpennetPeer(pn);
                        }
                        // wantPeer will call node.peers.addPeer(), we don't 
have to.
                }
@@ -1438,7 +1428,7 @@
                c.initialize(pn.jfkKs);
                if(pn.completedHandshake(bootID, hisRef, 0, hisRef.length, c, 
pn.jfkKs, replyTo, false, negType, trackerID, true, reusedTracker) >= 0) {
                        if(dontWant)
-                               node.peers.disconnect(pn, true, false, true);
+                               node.peers.disconnect(pn, true, false);
                        else
                                pn.maybeSendInitialMessages();
                } else {
@@ -1496,7 +1486,6 @@
                        else trackerID = pn.getReusableTrackerID();
                        System.arraycopy(Fields.longToBytes(trackerID), 0, 
data, ptr, 8);
                        ptr += 8;
-                       if(logMINOR) Logger.minor(this, "Sending tracker ID 
"+trackerID+" in JFK(3)");
                }
                System.arraycopy(Fields.longToBytes(node.bootID), 0, data, ptr, 
8);
                ptr += 8;
@@ -2846,7 +2835,7 @@
        /* (non-Javadoc)
         * @see 
freenet.node.OutgoingPacketMangler#sendHandshake(freenet.node.PeerNode)
         */
-       public void sendHandshake(PeerNode pn, boolean notRegistered) {
+       public void sendHandshake(PeerNode pn) {
                int negType = pn.selectNegType(this);
                if(negType == -1) {
                        // Pick a random negType from what I do support
@@ -2858,13 +2847,13 @@
                
                Peer peer = pn.getHandshakeIP();
                if(peer == null) {
-                       pn.couldNotSendHandshake(notRegistered);
+                       pn.couldNotSendHandshake();
                        return;
                }
                sendJFKMessage1(pn, peer, pn.handshakeUnknownInitiator(), 
pn.handshakeSetupType(), negType);
                if(logMINOR)
                        Logger.minor(this, "Sending handshake to "+peer+" for 
"+pn);
-               pn.sentHandshake(notRegistered);
+               pn.sentHandshake();
        }
 
        /* (non-Javadoc)
@@ -2881,7 +2870,7 @@
        }
 
        public int[] supportedNegTypes() {
-               return new int[] { 2, 4 };
+               return new int[] { 2, 3, 4 };
        }
 
        public int fullHeadersLengthOneMessage() {

Modified: trunk/freenet/src/freenet/node/KeyTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/KeyTracker.java      2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/KeyTracker.java      2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -33,9 +33,5 @@
                this.sessionCipher = cipher;
                this.sessionKey = sessionKey;
        }
-       
-       public String toString() {
-               return super.toString()+":"+packets.toString();
-       }
 
 }

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-12-09 23:55:18 UTC (rev 
24157)
+++ trunk/freenet/src/freenet/node/Node.java    2008-12-09 23:56:08 UTC (rev 
24158)
@@ -3263,7 +3263,7 @@
        }
        
        public void removePeerConnection(PeerNode pn) {
-               peers.disconnect(pn, true, false, false);
+               peers.disconnect(pn, true, false);
        }
 
        public void onConnectedPeer() {

Modified: trunk/freenet/src/freenet/node/NodeDispatcher.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeDispatcher.java  2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/NodeDispatcher.java  2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -314,7 +314,7 @@
                // Otherwise just dump all current connection state and keep 
trying to connect.
                boolean remove = m.getBoolean(DMT.REMOVE);
                if(remove)
-                       node.peers.disconnect(source, false, false, false);
+                       node.peers.disconnect(source, false, false);
                // If true, purge all references to this node. Otherwise, we 
can keep the node
                // around in secondary tables etc in order to more easily 
reconnect later. 
                // (Mostly used on opennet)

Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java  2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/OpennetManager.java  2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -58,7 +58,7 @@
         * if we have no other option. */
        private final LRUQueue oldPeers;
        /** Maximum number of old peers */
-       static final int MAX_OLD_PEERS = 25;
+       static final int MAX_OLD_PEERS = 50;
        /** Time at which last dropped a peer */
        private long timeLastDropped;
        /** Number of successful CHK requests since last added a node */
@@ -101,8 +101,6 @@
        public static final int MIN_PEERS_FOR_SCALING = 10;
        /** Maximum number of peers */
        public static final int MAX_PEERS_FOR_SCALING = 20;
-       /** Stop trying to reconnect to an old-opennet-peer after a month. */
-       public static final long MAX_TIME_ON_OLD_OPENNET_PEERS = 31 * 24 * 60 * 
60 * 1000;
        
        private final long creationTime;
     
@@ -248,7 +246,7 @@
                        if(logMINOR) Logger.minor(this, "Not adding 
"+pn.userToString()+" to opennet list as already there");
                        return null;
                }
-               if(wantPeer(pn, true, false, false)) return pn;
+               if(wantPeer(pn, true, false)) return pn;
                else return null;
                // Start at bottom. Node must prove itself.
        }
@@ -267,10 +265,6 @@
                dropExcessPeers();
        }
        
-       private long timeLastAddedOldOpennetPeer = -1;
-       
-       private static final int OLD_OPENNET_PEER_INTERVAL = 30*1000;
-       
        /**
         * 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
@@ -279,19 +273,11 @@
         * @param addAtLRU If there is a node to add, add it at the bottom 
rather than the top. Normally
         * we set this on new path folded nodes so that they will be replaced 
if during the trial period,
         * plus the time it takes to get a new path folding offer, they don't 
have a successful request.
-        * @param justChecking If true, we want to know whether there is space 
for a node to be added
-        * RIGHT NOW. If false, the normal behaviour applies: if nodeToAddNow 
is passed in, we decide
-        * whether to add that node, if it's null, we decide whether to send an 
offer subject to the
-        * inter-offer time.
-        * @param oldOpennetPeer If true, we are trying to add an 
old-opennet-peer which has reconnected.
-        * There is a throttle, we accept no more than one old-opennet-peer 
every 30 seconds. On receiving
-        * a packet, we call once to decide whether to try to parse it against 
the old-opennet-peers, and
-        * then again to decide whether it is worth keeping; in the latter case 
if we decide not, the
-        * old-opennet-peer will be told to disconnect and go away, but 
normally we don't reach that point
-        * because of the first check.
+        * @param justChecking If true, and nodeToAddNow == null, we don't 
actually send an offer, we
+        * just want to know if there is space for a node.
         * @return True if the node was added / should be added.
         */
-       public boolean wantPeer(PeerNode nodeToAddNow, boolean addAtLRU, 
boolean justChecking, boolean oldOpennetPeer) {
+       public boolean wantPeer(PeerNode nodeToAddNow, boolean addAtLRU, 
boolean justChecking) {
                boolean notMany = false;
                boolean noDisconnect;
                synchronized(this) {
@@ -315,9 +301,6 @@
                                if(nodeToAddNow != null || !justChecking)
                                        timeLastOffered = 
System.currentTimeMillis();
                                notMany = true;
-                               // Don't check timeLastAddedOldOpennetPeer, 
since we want it anyway. But do update it.
-                               if(oldOpennetPeer)
-                                       timeLastAddedOldOpennetPeer = 
System.currentTimeMillis();
                        }
                        noDisconnect = successCount < 
MIN_SUCCESS_BETWEEN_DROP_CONNS;
                }
@@ -333,13 +316,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, false);
+                               PeerNode toDrop = peerToDrop(true);
                                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, false);
+                               toDrop = peerToDrop(noDisconnect || 
nodeToAddNow == null);
                                if(toDrop == null) {
                                        if(logMINOR)
                                                Logger.minor(this, "No more 
peers to drop, still "+peersLRU.size()+" peers, cannot accept 
peer"+(nodeToAddNow == null ? "" : nodeToAddNow.toString()));
@@ -353,12 +336,8 @@
                                peersLRU.remove(toDrop);
                                dropList.add(toDrop);
                        }
-                       long now = System.currentTimeMillis();
-                       if(canAdd && oldOpennetPeer) {
-                               if(timeLastAddedOldOpennetPeer > 0 && now - 
timeLastAddedOldOpennetPeer > OLD_OPENNET_PEER_INTERVAL)
-                                       canAdd = false;
-                       }
-                       if(canAdd && !justChecking) {
+                       if(canAdd) {
+                               long now = System.currentTimeMillis();
                                if(nodeToAddNow != null) {
                                        successCount = 0;
                                        if(addAtLRU)
@@ -369,8 +348,6 @@
                                        oldPeers.remove(nodeToAddNow);
                                        if(!dropList.isEmpty())
                                                timeLastDropped = now;
-                                       if(oldOpennetPeer)
-                                               timeLastAddedOldOpennetPeer = 
now;
                                } else {
                                        if(now - timeLastOffered <= 
MIN_TIME_BETWEEN_OFFERS && !hasDisconnected) {
                                                if(logMINOR)
@@ -397,27 +374,26 @@
                }
                for(OpennetPeerNode pn : dropList) {
                        if(logMINOR) Logger.minor(this, "Dropping LRU opennet 
peer: "+pn);
-                       node.peers.disconnect(pn, true, true, true);
+                       node.peers.disconnect(pn, true, true);
                }
                return canAdd;
        }
 
-       void dropExcessPeers() {
+       private void dropExcessPeers() {
                while(peersLRU.size() > getNumberOfConnectedPeersToAim()) {
                        if(logMINOR)
                                Logger.minor(this, "Dropping opennet peers: 
currently "+peersLRU.size());
                        PeerNode toDrop;
-                       toDrop = peerToDrop(false, false);
-                       if(toDrop == null) toDrop = peerToDrop(false, true);
+                       toDrop = peerToDrop(false);
                        if(toDrop == null) return;
                        peersLRU.remove(toDrop);
                        if(logMINOR)
                                Logger.minor(this, "Dropping "+toDrop);
-                       node.peers.disconnect(toDrop, true, true, true);
+                       node.peers.disconnect(toDrop, true, true);
                }
        }
        
-       synchronized OpennetPeerNode peerToDrop(boolean noDisconnect, boolean 
force) {
+       synchronized OpennetPeerNode peerToDrop(boolean noDisconnect) {
                if(peersLRU.size() < getNumberOfConnectedPeersToAim()) {
                        // Don't drop any peers
                        return null;
@@ -427,12 +403,11 @@
                        for(int i=0;i<peers.length;i++) {
                                OpennetPeerNode pn = peers[i];
                                if(pn == null) continue;
-                               if((!pn.isDroppable(false)) && !force) continue;
+                               if(!pn.isDroppable()) 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;
                                }
                        }
@@ -442,11 +417,10 @@
                        for(int i=0;i<peers.length;i++) {
                                OpennetPeerNode pn = peers[i];
                                if(pn == null) continue;
-                               if((!pn.isDroppable(false)) && !force) continue;
+                               if(!pn.isDroppable()) 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;
                        }
                }
@@ -465,19 +439,16 @@
                                // Re-add it: nasty race condition when we have 
few peers
                        }
                }
-               if(!wantPeer(pn, false, false, false)) // Start at top as it 
just succeeded
-                       node.peers.disconnect(pn, true, false, true);
+               if(!wantPeer(pn, false, false)) // Start at top as it just 
succeeded
+                       node.peers.disconnect(pn, true, false);
        }
 
        public void onRemove(OpennetPeerNode pn) {
                synchronized (this) {
                        peersLRU.remove(pn);
-                       if(pn.isDroppable(true) && !pn.grabWasDropped()) {
-                               if(logMINOR) Logger.minor(this, "onRemove() for 
"+pn);
-                               oldPeers.push(pn);
-                               while (oldPeers.size() > MAX_OLD_PEERS)
-                                       oldPeers.pop();
-                       }
+                       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-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/OpennetPeerNode.java 2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -35,14 +35,13 @@
                return true;
        }
        
-       public boolean isDroppable(boolean ignoreDisconnect) {
+       public boolean isDroppable() {
                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 &&
@@ -51,7 +50,6 @@
                                return false;
                        }
                }
-               }
                return true;
        }
        
@@ -118,24 +116,7 @@
 
        @Override
        protected void onConnect() {
-               super.onConnect();
                
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;
-       }
-       
 }

Modified: trunk/freenet/src/freenet/node/OutgoingPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/OutgoingPacketMangler.java   2008-12-09 
23:55:18 UTC (rev 24157)
+++ trunk/freenet/src/freenet/node/OutgoingPacketMangler.java   2008-12-09 
23:56:08 UTC (rev 24158)
@@ -77,7 +77,7 @@
         * Send a handshake, if possible, to the node.
         * @param pn
         */
-       public void sendHandshake(PeerNode pn, boolean notRegistered);
+       public void sendHandshake(PeerNode pn);
 
        /**
         * Is a peer disconnected?

Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java    2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/PacketSender.java    2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -229,14 +229,13 @@
                
                int newBrokeAt = 0;
                for(int i = 0; i < nodes.length; i++) {
-                       int idx = (i + brokeAt + 1) % nodes.length;
-                       PeerNode pn = nodes[idx];
+                       PeerNode pn = nodes[(i + brokeAt + 1) % nodes.length];
                        lastReceivedPacketFromAnyNode =
                                Math.max(pn.lastReceivedPacketTime(), 
lastReceivedPacketFromAnyNode);
                        pn.maybeOnConnect();
                        if(pn.shouldDisconnectAndRemoveNow() && 
!pn.isDisconnecting()) {
                                // Might as well do it properly.
-                               node.peers.disconnect(pn, true, true, false);
+                               node.peers.disconnect(pn, true, true);
                        }
                        if(pn.shouldThrottle() && !canSendThrottled)
                                continue;
@@ -261,7 +260,7 @@
                                }
                                
                                try {
-                               if(canSendThrottled && pn.maybeSendPacket(now, 
rpiTemp, rpiIntTemp)) {
+                               if(pn.maybeSendPacket(now, rpiTemp, rpiIntTemp) 
&& canSendThrottled) {
                                        canSendThrottled = false;
                                        count = node.outputThrottle.getCount();
                                        if(count > MAX_PACKET_SIZE)
@@ -272,7 +271,7 @@
                                                if(logMINOR)
                                                        Logger.minor(this, "Can 
send throttled packets in "+canSendAt+"ms");
                                                nextActionTime = 
Math.min(nextActionTime, now + canSendAt);
-                                               newBrokeAt = idx;
+                                               newBrokeAt = i;
                                        }
                                }
                                } catch (BlockedTooLongException e) {
@@ -295,7 +294,7 @@
                        if(pn.shouldSendHandshake()) {
                                // Send handshake if necessary
                                long beforeHandshakeTime = 
System.currentTimeMillis();
-                               pn.getOutgoingMangler().sendHandshake(pn, 
false);
+                               pn.getOutgoingMangler().sendHandshake(pn);
                                long afterHandshakeTime = 
System.currentTimeMillis();
                                if((afterHandshakeTime - beforeHandshakeTime) > 
(2 * 1000))
                                        Logger.error(this, "afterHandshakeTime 
is more than 2 seconds past beforeHandshakeTime (" + (afterHandshakeTime - 
beforeHandshakeTime) + ") in PacketSender working with " + pn.userToString());
@@ -307,39 +306,28 @@
                }
                brokeAt = newBrokeAt;
 
-               /* Attempt to connect to old-opennet-peers.
-                * Constantly send handshake packets, in order to get through a 
NAT.
-                * Most JFK(1)'s are less than 300 bytes. 25*300/15 = avg 
500B/sec bandwidth cost.
-                * Well worth it to allow us to reconnect more quickly. */
-               
+               // Consider sending connect requests to our opennet old-peers.
+               // No point if they are NATed, of course... but we don't know 
whether they are.
                OpennetManager om = node.getOpennet();
-               if(om != null && node.getUptime() > 30*1000) {
-                       PeerNode[] peers = om.getOldPeers();
-                       
-                       for(PeerNode pn : peers) {
-                               if(pn.timeLastConnected() <= 0)
-                                       Logger.error(this, "Last connected is 
zero or negative for old-opennet-peer "+pn);
-                               // Will be removed by next line.
-                               if(now - pn.timeLastConnected() > 
OpennetManager.MAX_TIME_ON_OLD_OPENNET_PEERS) {
-                                       om.purgeOldOpennetPeer(pn);
-                                       if(logMINOR) Logger.minor(this, 
"Removing old opennet peer (too old): "+pn);
-                                       continue;
+               if(om != null) {
+                       int connCount = node.peers.quickCountConnectedPeers();
+                       int minDelay = connCount == 0 ? 
MIN_OLD_OPENNET_CONNECT_DELAY_NO_CONNS : MIN_OLD_OPENNET_CONNECT_DELAY;
+                       if(logDEBUG)
+                               Logger.debug(this, "Conns " + connCount + " 
minDelay " + minDelay + " old opennet peers " + om.countOldOpennetPeers() + " 
last sent " + (now - timeLastSentOldOpennetConnectAttempt) + " startup " + (now 
- node.startupTime));
+                       if(now - timeLastSentOldOpennetConnectAttempt > 
minDelay &&
+                               connCount <= 
MIN_CONNECTIONS_TRY_OLD_OPENNET_PEERS &&
+                               om.countOldOpennetPeers() > 0 &&
+                               now - node.startupTime > 
OpennetManager.DROP_STARTUP_DELAY) {
+                               PeerNode pn = om.randomOldOpennetNode();
+                               if(pn != null) {
+                                       if(logMINOR)
+                                               Logger.minor(this, "Sending 
old-opennet connect attempt to " + pn);
+                                       
pn.getOutgoingMangler().sendHandshake(pn);
+                                       timeLastSentOldOpennetConnectAttempt = 
now;
+                                       if(pn.noContactDetails() && 
node.getPeerNodes().length > 0 && connCount > 0 && node.random.nextBoolean())
+                                               pn.startARKFetcher();
                                }
-                               if(pn.isConnected()) continue; // Race 
condition??
-                               if(pn.noContactDetails()) {
-                                       pn.startARKFetcher();
-                                       continue;
-                               }
-                               if(pn.shouldSendHandshake()) {
-                                       // Send handshake if necessary
-                                       long beforeHandshakeTime = 
System.currentTimeMillis();
-                                       
pn.getOutgoingMangler().sendHandshake(pn, true);
-                                       long afterHandshakeTime = 
System.currentTimeMillis();
-                                       if((afterHandshakeTime - 
beforeHandshakeTime) > (2 * 1000))
-                                               Logger.error(this, 
"afterHandshakeTime is more than 2 seconds past beforeHandshakeTime (" + 
(afterHandshakeTime - beforeHandshakeTime) + ") in PacketSender working with " 
+ pn.userToString());
-                               }
                        }
-                       
                }
 
                if(now - lastClearedOldSwapChains > 10000) {

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -477,7 +477,7 @@
        /**
         * Disconnect from a specified node
         */
-       public void disconnect(final PeerNode pn, boolean 
sendDisconnectMessage, final boolean waitForAck, boolean purge) {
+       public void disconnect(final PeerNode pn, boolean 
sendDisconnectMessage, final boolean waitForAck) {
                if(logMINOR)
                        Logger.minor(this, "Disconnecting " + 
pn.shortToString());
                synchronized(this) {
@@ -486,7 +486,7 @@
                }
                pn.notifyDisconnecting();
                if(sendDisconnectMessage) {
-                       Message msg = DMT.createFNPDisconnect(true, purge, -1, 
new ShortBuffer(new byte[0]));
+                       Message msg = DMT.createFNPDisconnect(true, false, -1, 
new ShortBuffer(new byte[0]));
                        try {
                                pn.sendAsync(msg, new AsyncMessageCallback() {
 
@@ -1768,7 +1768,6 @@
                                continue;
                        count++;
                }
-               if(logMINOR) Logger.minor(this, "countConnectedDarknetPeers() 
returning "+count);
                return count;
        }
 

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -166,7 +166,7 @@
        private boolean isRoutable;
 
        /** Used by maybeOnConnect */
-       private boolean wasDisconnected = true;
+       private boolean wasDisconnected;
        /**
        * ARK fetcher.
        */
@@ -1364,25 +1364,25 @@
                if(isBurstOnly())
                        return calcNextHandshakeBurstOnly(now);
                synchronized(this) {
-                       long delay;
-                       if(unroutableOlderVersion || unroutableNewerVersion || 
disableRouting) {
-                               // Let them know we're here, but have no hope 
of routing general data to them.
-                               delay = Node.MIN_TIME_BETWEEN_VERSION_SENDS + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS);
-                       } else if(invalidVersion() && !firstHandshake) {
-                               delay = Node.MIN_TIME_BETWEEN_VERSION_PROBES + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES);
-                       } else {
-                               delay = Node.MIN_TIME_BETWEEN_HANDSHAKE_SENDS + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS);
-                       }
-                       // FIXME proper multi-homing support!
-                       delay /= (handshakeIPs == null ? 1 : 
handshakeIPs.length);
-                       if(delay < 3000) delay = 3000;
-                       sendHandshakeTime = now + delay;
-                       
-                       if(successfulHandshakeSend)
-                               firstHandshake = false;
-                       handshakeCount++;
-                       return handshakeCount == MAX_HANDSHAKE_COUNT;
+               long delay;
+               if(unroutableOlderVersion || unroutableNewerVersion || 
disableRouting) {
+                       // Let them know we're here, but have no hope of 
routing general data to them.
+                       delay = Node.MIN_TIME_BETWEEN_VERSION_SENDS + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS);
+               } else if(invalidVersion() && !firstHandshake) {
+                       delay = Node.MIN_TIME_BETWEEN_VERSION_PROBES + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES);
+               } else {
+                       delay = Node.MIN_TIME_BETWEEN_HANDSHAKE_SENDS + 
node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_HANDSHAKE_SENDS);
                }
+               sendHandshakeTime = now + delay;
+               // FIXME proper multi-homing support!
+               delay /= (handshakeIPs == null ? 1 : handshakeIPs.length);
+               if(delay < 3000) delay = 3000;
+               
+               if(successfulHandshakeSend)
+                       firstHandshake = false;
+               handshakeCount++;
+               return handshakeCount == MAX_HANDSHAKE_COUNT;
+               }
        }
 
        private synchronized boolean calcNextHandshakeBurstOnly(long now) {
@@ -1414,12 +1414,11 @@
                return fetchARKFlag;
        }
 
-       protected void calcNextHandshake(boolean successfulHandshakeSend, 
boolean dontFetchARK, boolean notRegistered) {
+       protected void calcNextHandshake(boolean successfulHandshakeSend, 
boolean dontFetchARK) {
                long now = System.currentTimeMillis();
                boolean fetchARKFlag = false;
                fetchARKFlag = innerCalcNextHandshake(successfulHandshakeSend, 
dontFetchARK, now);
-               if(!notRegistered)
-                       setPeerNodeStatus(now);  // Because of isBursting being 
set above and it can't hurt others
+               setPeerNodeStatus(now);  // Because of isBursting being set 
above and it can't hurt others
                // Don't fetch ARKs for peers we have verified (through 
handshake) to be incompatible with us
                if(fetchARKFlag && !dontFetchARK) {
                        long arkFetcherStartTime1 = System.currentTimeMillis();
@@ -1458,20 +1457,20 @@
        * Call this method when a handshake request has been
        * sent.
        */
-       public void sentHandshake(boolean notRegistered) {
+       public void sentHandshake() {
                if(logMINOR)
                        Logger.minor(this, "sentHandshake(): " + this);
-               calcNextHandshake(true, false, notRegistered);
+               calcNextHandshake(true, false);
        }
 
        /**
        * Call this method when a handshake request could not be sent (i.e. no 
IP address available)
        * sent.
        */
-       public void couldNotSendHandshake(boolean notRegistered) {
+       public void couldNotSendHandshake() {
                if(logMINOR)
                        Logger.minor(this, "couldNotSendHandshake(): " + this);
-               calcNextHandshake(false, false, notRegistered);
+               calcNextHandshake(false, false);
        }
 
        /**
@@ -1831,7 +1830,7 @@
 
                // Update sendHandshakeTime; don't send another handshake for a 
while.
                // If unverified, "a while" determines the timeout; if not, 
it's just good practice to avoid a race below.
-               calcNextHandshake(true, true, false);
+               calcNextHandshake(true, true);
                stopARKFetcher();
                try {
                        // First, the new noderef
@@ -1906,6 +1905,7 @@
                        } else if(bootIDChanged && logMINOR)
                                Logger.minor(this, "Changed boot ID from " + 
bootID + " to " + thisBootID + " for " + getPeer());
                        this.bootID = thisBootID;
+                       boolean newPacketTracker = false;
                        if(currentTracker != null && 
currentTracker.packets.trackerID == trackerID && 
!currentTracker.packets.isDeprecated()) {
                                if(isJFK4 && !jfk4SameAsOld)
                                        Logger.error(this, "In JFK(4), found 
tracker ID "+trackerID+" but other side says is new! for "+this);
@@ -1923,6 +1923,7 @@
                        } else if(trackerID == -1) {
                                // Create a new tracker unconditionally
                                packets = new PacketTracker(this);
+                               newPacketTracker = true;
                                if(logMINOR) Logger.minor(this, "Creating new 
PacketTracker as instructed for "+this);
                        } else if(trackerID == -2 && !bootIDChanged) {
                                // Reuse if not deprecated and not boot ID 
changed
@@ -1934,6 +1935,7 @@
                                        if(logMINOR) Logger.minor(this, 
"Re-using packet tracker (not given an ID): "+packets.trackerID+" on "+this+" 
from prev "+previousTracker);
                                } else {
                                        packets = new PacketTracker(this);
+                                       newPacketTracker = true;
                                        if(logMINOR) Logger.minor(this, "Cannot 
reuse trackers (not given an ID) on "+this);
                                }
                        } else {
@@ -1944,9 +1946,11 @@
                                        packets = new PacketTracker(this, 
trackerID);
                                } else
                                        packets = new PacketTracker(this);
+                               newPacketTracker = true;
                                if(logMINOR) Logger.minor(this, "Creating new 
tracker (last resort) on "+this);
                        }
                        if(bootIDChanged) {
+                               newPacketTracker = true;
                                oldPrev = previousTracker;
                                oldCur = currentTracker;
                                previousTracker = null;
@@ -1960,7 +1964,7 @@
                                // else it's a rekey
                        }
                        newTracker = new KeyTracker(this, packets, encCipher, 
encKey);
-                       if(logMINOR) Logger.minor(this, "New key tracker in 
completedHandshake: "+newTracker+" for "+packets+" for "+shortToString()+" neg 
type "+negType);
+                       if(logMINOR) Logger.minor(this, "New key tracker in 
completedHandshake: "+newTracker+" for "+shortToString()+" neg type "+negType+" 
new packet tracker: "+newPacketTracker);
                        if(unverified) {
                                if(unverifiedTracker != null) {
                                        // Keep the old unverified tracker if 
possible.
@@ -2027,7 +2031,7 @@
                        node.peers.disconnected(this);
                else if(!wasARekey) {
                        node.peers.addConnectedPeer(this);
-                       maybeOnConnect();
+                       onConnect();
                }
                
                return packets.trackerID;
@@ -2232,7 +2236,6 @@
                maybeSendInitialMessages();
                setPeerNodeStatus(now);
                node.peers.addConnectedPeer(this);
-               maybeOnConnect();
                if(completelyDeprecatedTracker != null) {
                        if(completelyDeprecatedTracker.packets != 
tracker.packets)
                                
completelyDeprecatedTracker.packets.completelyDeprecated(tracker);
@@ -3300,9 +3303,7 @@
         * A method to be called once at the beginning of every time 
isConnected() is true
         */
        protected void onConnect() {
-               OpennetManager om = node.getOpennet();
-               if(om != null)
-                       om.dropExcessPeers();
+               // Do nothing in the default impl
        }
 
        public void onFound(long edition, FetchResult result) {
@@ -4253,15 +4254,8 @@
                synchronized(this) {
                        cur = currentTracker;
                }
-               if(cur == null) {
-                       if(logMINOR) Logger.minor(this, 
"getReusableTrackerID(): cur = null on "+this);
-                       return -1;
-               }
-               if(cur.packets.isDeprecated()) {
-                       if(logMINOR) Logger.minor(this, 
"getReusableTrackerID(): cur.packets.isDeprecated on "+this);
-                       return -1;
-               }
-               if(logMINOR) Logger.minor(this, "getReusableTrackerID(): 
"+cur.packets.trackerID+" on "+this);
+               if(cur == null) return -1;
+               if(cur.packets.isDeprecated()) return -1;
                return cur.packets.trackerID;
        }
 }

Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java  2008-12-09 23:55:18 UTC 
(rev 24157)
+++ trunk/freenet/src/freenet/node/RequestHandler.java  2008-12-09 23:56:08 UTC 
(rev 24158)
@@ -558,7 +558,7 @@
        private boolean finishOpennetNoRelayInner(OpennetManager om) {
                if(logMINOR)
                        Logger.minor(this, "Finishing opennet: sending own 
reference");
-               if(!om.wantPeer(null, false, false, false))
+               if(!om.wantPeer(null, false, false))
                        return false; // Don't want a reference
 
                try {

Modified: trunk/freenet/src/freenet/node/SeedClientPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/SeedClientPeerNode.java      2008-12-09 
23:55:18 UTC (rev 24157)
+++ trunk/freenet/src/freenet/node/SeedClientPeerNode.java      2008-12-09 
23:56:08 UTC (rev 24158)
@@ -85,7 +85,7 @@
        @Override
        public boolean disconnected(boolean dumpMessageQueue, boolean 
dumpTrackers) {
                boolean ret = super.disconnected(dumpMessageQueue, 
dumpTrackers);
-               node.peers.disconnect(this, false, false, false);
+               node.peers.disconnect(this, false, false);
                return ret;
        }
 

Modified: trunk/freenet/src/freenet/node/SeedServerPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/SeedServerPeerNode.java      2008-12-09 
23:55:18 UTC (rev 24157)
+++ trunk/freenet/src/freenet/node/SeedServerPeerNode.java      2008-12-09 
23:56:08 UTC (rev 24158)
@@ -73,7 +73,7 @@
                final OpennetManager om = node.getOpennet();
                if(om == null) {
                        Logger.normal(this, "Opennet turned off while 
connecting to seednodes");
-                       node.peers.disconnect(this, true, true, true);
+                       node.peers.disconnect(this, true, true);
                } else {
                        // Wait 5 seconds. Another node may connect first, we 
don't want all the
                        // announcements to go to the node which we connect to 
most quickly.
@@ -113,7 +113,7 @@
        @Override
        public boolean disconnected(boolean dumpMessageQueue, boolean 
dumpTrackers) {
                boolean ret = super.disconnected(dumpMessageQueue, 
dumpTrackers);
-               node.peers.disconnect(this, false, false, false);
+               node.peers.disconnect(this, false, false);
                return ret;
        }
 


Property changes on: trunk/freenet/test/freenet/support/io/MockInputStream.java
___________________________________________________________________
Deleted: svn:mergeinfo
   - 

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

Reply via email to