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