Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/clients/http/N2NTMToadlet.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/clients/http/N2NTMToadlet.java (revision 9477)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/clients/http/N2NTMToadlet.java (working copy)
@@ -164,7 +164,7 @@
buf.append("PeerNode.hashCode '"+request.getParam("hashcode")+"' not found.
\n");
buf.append("");
buf.append("");
- } else if(!pn.isConnected() && !pn.isVerifiedIncompatibleNewerVersion() && !pn.isVerifiedIncompatibleOlderVersion()) {
+ } else if(!pn.isConnected()) {
ctx.getPageMaker().makeHead(buf, "Node To Node Text Message Failed");
buf.append("
");
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/io/comm/DummyPeerContext.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/io/comm/DummyPeerContext.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/io/comm/DummyPeerContext.java (working copy)
@@ -22,8 +22,11 @@
// Do nothing
}
+ public boolean isReallyConnected() {
+ return false;
+ }
+
public boolean isConnected() {
return false;
}
-
}
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/io/comm/PeerContext.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/io/comm/PeerContext.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/io/comm/PeerContext.java (working copy)
@@ -14,5 +14,7 @@
void forceDisconnect();
/** Is the peer connected? If we can't tell, return true. */
+ boolean isReallyConnected();
+
boolean isConnected();
}
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/CHKInsertSender.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/CHKInsertSender.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/CHKInsertSender.java (working copy)
@@ -637,7 +637,7 @@
MessageFilter mf = null;
for(int i=0;i
(source.timeLastConnected()+Node.HANDSHAKE_TIMEOUT*4))
+ if(source.isReallyConnected() && startTime > (source.timeLastConnected()+Node.HANDSHAKE_TIMEOUT*4))
Logger.error(this, "Did not receive DataInsert on "+uid+" from "+source+" !");
Message tooSlow = DMT.createFNPRejectedTimeout(uid);
source.sendAsync(tooSlow, null);
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/KeyTracker.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/KeyTracker.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/KeyTracker.java (working copy)
@@ -634,7 +634,7 @@
*/
public int allocateOutgoingPacketNumber() throws KeyChangedException, NotConnectedException {
int packetNumber;
- if(!pn.isConnected()) throw new NotConnectedException();
+ if(!pn.isReallyConnected()) throw new NotConnectedException();
synchronized(this) {
if(isDeprecated) throw new KeyChangedException();
packetNumber = nextPacketNumber++;
@@ -658,7 +658,7 @@
*/
public int allocateOutgoingPacketNumberNeverBlock() throws KeyChangedException, NotConnectedException, WouldBlockException {
int packetNumber;
- if(!pn.isConnected()) throw new NotConnectedException();
+ if(!pn.isReallyConnected()) throw new NotConnectedException();
synchronized(this) {
packetNumber = nextPacketNumber;
if(isDeprecated) throw new KeyChangedException();
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/LocationManager.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/LocationManager.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/LocationManager.java (working copy)
@@ -124,7 +124,7 @@
PeerNode[] peers = node.peers.connectedPeers;
for(int i=0;i TIMEOUT*2) {
+ if(pn.isReallyConnected() && System.currentTimeMillis() - pn.timeLastConnected() > TIMEOUT*2) {
// Timed out! Abort...
Logger.error(this, "Timed out waiting for SwapRejected/SwapReply on "+uid);
}
@@ -421,7 +421,7 @@
}
if(reply == null) {
- if(pn.isConnected() && System.currentTimeMillis() - pn.timeLastConnected() > TIMEOUT*2) {
+ if(pn.isReallyConnected() && System.currentTimeMillis() - pn.timeLastConnected() > TIMEOUT*2) {
// Hrrrm!
Logger.error(this, "Timed out waiting for SwapComplete - malicious node?? on "+uid);
}
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/NodeDispatcher.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/NodeDispatcher.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/NodeDispatcher.java (working copy)
@@ -100,6 +100,7 @@
return true;
} else if(spec == DMT.nodeToNodeTextMessage) {
node.receivedNodeToNodeTextMessage(m);
+ System.out.println("AABBgot "+m);
return true;
}
return false;
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PacketSender.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PacketSender.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PacketSender.java (working copy)
@@ -151,15 +151,15 @@
PeerNode pn = nodes[i];
lastReceivedPacketFromAnyNode =
Math.max(pn.lastReceivedPacketTime(), lastReceivedPacketFromAnyNode);
+
if(pn.isConnected()) {
-
- if(pn.shouldDisconnectNow()) {
- pn.forceDisconnect();
- continue;
- }
+ //if(pn.shouldDisconnectNow()) {
+ // pn.forceDisconnect();
+ //continue;
+ //}
// Is the node dead?
- if(now - pn.lastReceivedPacketTime() > pn.maxTimeBetweenReceivedPackets()) {
+ if(((now - pn.lastReceivedPacketTime() > pn.maxTimeBetweenReceivedPackets()))&&pn.isReallyConnected()) {
Logger.error(this, "Disconnecting from "+pn+" - haven't received packets recently");
pn.disconnected();
continue;
@@ -252,7 +252,7 @@
pn.addToLocalNodeSentMessagesToStatistic(m);
node.packetMangler.processOutgoingOrRequeue(new MessageItem[] { new MessageItem(m, null) }, pn, true, true);
}
- } else {
+ }else{
// Not connected
// Send handshake if necessary
long beforeHandshakeTime = System.currentTimeMillis();
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerManager.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerManager.java (revision 9476)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerManager.java (working copy)
@@ -294,7 +294,7 @@
for(int i=0;i<5;i++) {
PeerNode pn = connectedPeers[node.random.nextInt(connectedPeers.length)];
if(pn == exclude) continue;
- if(pn.isConnected()) return pn;
+ if(pn.isReallyConnected()) return pn;
}
// None of them worked
// Move the un-connected ones out
@@ -304,7 +304,7 @@
for(int i=0;i sendHandshakeTime) &&
@@ -850,11 +874,7 @@
long now = -1;
synchronized(this) {
now = System.currentTimeMillis();
- if(verifiedIncompatibleOlderVersion || verifiedIncompatibleNewerVersion) {
- // Let them know we're here, but have no hope of connecting
- sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_SENDS
- + node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_SENDS);
- } else if(invalidVersion() && !firstHandshake) {
+ if(invalidVersion() && !firstHandshake) {
sendHandshakeTime = now + Node.MIN_TIME_BETWEEN_VERSION_PROBES
+ node.random.nextInt(Node.RANDOMIZED_TIME_BETWEEN_VERSION_PROBES);
} else {
@@ -947,7 +967,7 @@
*/
public void send(Message req) throws NotConnectedException {
synchronized (this) {
- if(!isConnected()) {
+ if(!isSendable(req)) {
Logger.error(this, "Tried to send "+req+" but not connected to "+this, new Exception("debug"));
return;
}
@@ -1045,7 +1065,7 @@
* can be used in handshaking when the connection hasn't been verified yet.
*/
synchronized void receivedPacket(boolean dontLog) throws NotConnectedException {
- if(isConnected == false && !dontLog) {
+ if(!isConnected() && !dontLog) {
if(unverifiedTracker == null && currentTracker == null) {
Logger.error(this, "Received packet while disconnected!: "+this, new Exception("error"));
throw new NotConnectedException();
@@ -1108,10 +1128,8 @@
}
Logger.normal(this, "Not connecting to "+this+" - reverse invalid version "+Version.getVersionString()+" for peer's lastGoodversion: "+lastGoodVersion);
verifiedIncompatibleNewerVersion = true;
- isConnected = false;
+ isReallyConnected = false;
setPeerNodeStatus(now);
- node.peers.disconnected(this);
- return false;
} else {
verifiedIncompatibleNewerVersion = false;
setPeerNodeStatus(now);
@@ -1119,10 +1137,8 @@
if(invalidVersion()) {
Logger.normal(this, "Not connecting to "+this+" - invalid version "+version);
verifiedIncompatibleOlderVersion = true;
- isConnected = false;
+ isReallyConnected = false;
setPeerNodeStatus(now);
- node.peers.disconnected(this);
- return false;
} else {
verifiedIncompatibleOlderVersion = false;
setPeerNodeStatus(now);
@@ -1132,7 +1148,7 @@
if(thisBootID != this.bootID) {
connectedTime = System.currentTimeMillis();
Logger.minor(this, "Changed boot ID from "+bootID+" to "+thisBootID+" for "+getPeer());
- isConnected = false; // Will be reset below
+ isReallyConnected = false; // Will be reset below
setPeerNodeStatus(now);
if(previousTracker != null) {
KeyTracker old = previousTracker;
@@ -1160,7 +1176,8 @@
unverifiedTracker = null;
if(previousTracker != null)
previousTracker.deprecated();
- isConnected = true;
+ if((!isVerifiedIncompatibleNewerVersion())&&(!isVerifiedIncompatibleOlderVersion()))
+ isReallyConnected = true;
neverConnected = false;
peerAddedTime = 0; // don't store anymore
setPeerNodeStatus(now);
@@ -1166,7 +1183,7 @@
setPeerNodeStatus(now);
ctx = null;
}
- if(!isConnected)
+ if(!isConnected())
node.peers.disconnected(this);
Logger.normal(this, "Completed handshake with "+this+" on "+replyTo+" - current: "+currentTracker+" old: "+previousTracker+" unverified: "+unverifiedTracker+" bootID: "+thisBootID+" myName: "+myName);
try {
@@ -1175,7 +1192,7 @@
Logger.error(this, "Disconnected in completedHandshake with "+this);
return true; // i suppose
}
- if(isConnected)
+ if(isConnected())
node.peers.addConnectedPeer(this);
sentInitialMessages = false;
return true;
@@ -1192,6 +1209,7 @@
else return;
if(unverifiedTracker != null) return;
}
+
sendInitialMessages();
}
@@ -1228,7 +1246,7 @@
previousTracker.deprecated();
currentTracker = unverifiedTracker;
unverifiedTracker = null;
- isConnected = true;
+ isReallyConnected = true;
neverConnected = false;
peerAddedTime = 0; // don't store anymore
setPeerNodeStatus(now);
@@ -1449,8 +1467,16 @@
}
public String getStatus() {
+ String status;
+ if(isReallyConnected)
+ status = new String("CONNECTED");
+ else if(isConnected())
+ status = new String("INCOMPATIBLE");
+ else
+ status = new String("DISCONNECTED");
+
return
- (isConnected ? "CONNECTED " : "DISCONNECTED") + " " + getPeer()+" "+myName+" "+currentLocation.getValue()+" "+getVersion()+" backoff: "+routingBackoffLength+" ("+(Math.max(routingBackedOffUntil - System.currentTimeMillis(),0))+")";
+ status + " " + getPeer()+" "+myName+" "+currentLocation.getValue()+" "+getVersion()+" backoff: "+routingBackoffLength+" ("+(Math.max(routingBackedOffUntil - System.currentTimeMillis(),0))+")";
}
public String getTMCIPeerInfo() {
@@ -1771,7 +1797,7 @@
Logger.minor(this, "Reporting ping time to "+this+" : "+(now - startTime));
}
if(verifiedIncompatibleOlderVersion)
- forceDisconnect();
+ isReallyConnected=false;
}
public double averagePingTime() {
@@ -1961,7 +1987,7 @@
public synchronized void setPeerNodeStatus(long now) {
int oldPeerNodeStatus = peerNodeStatus;
- if(isConnected) {
+ if(isReallyConnected) {
peerNodeStatus = Node.PEER_NODE_STATUS_CONNECTED;
if(now < routingBackedOffUntil) {
peerNodeStatus = Node.PEER_NODE_STATUS_ROUTING_BACKED_OFF;
@@ -1991,7 +2017,7 @@
} else {
peerNodeStatus = Node.PEER_NODE_STATUS_DISCONNECTED;
}
- if(!isConnected && previousRoutingBackoffReason != null) {
+ if(!isReallyConnected && previousRoutingBackoffReason != null) {
node.removePeerNodeRoutingBackoffReason(previousRoutingBackoffReason, this);
previousRoutingBackoffReason = null;
}
@@ -2020,7 +2046,7 @@
}
public void disablePeer() {
- if(isConnected) {
+ if(isConnected()) {
forceDisconnect();
}
isDisabled = true;