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 9509)
+++ /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 9509)
+++ /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 9509)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/io/comm/PeerContext.java (working copy)
@@ -13,6 +13,9 @@
/** Force the peer to disconnect */
void forceDisconnect();
- /** Is the peer connected? If we can't tell, return true. */
+ /** Is the peer connected? Have we established the session link? */
boolean isConnected();
+
+ /** Is the peer connected? are we able to route requests to it? */
+ boolean isReallyConnected();
}
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 9509)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/CHKInsertSender.java (working copy)
@@ -644,7 +644,7 @@
MessageFilter mf = null;
for(int i=0;i
= 1 ? String.valueOf(callbacks[0]) : ""));
Logger.minor(this, log);
}
- if(tracker == null || (!tracker.pn.isConnected())) {
+ if(tracker == null || (!tracker.pn.isReallyConnected())) {
throw new NotConnectedException();
}
@@ -1398,6 +1398,11 @@
public boolean isDisconnected(PeerContext context) {
if(context == null) return false;
- return !((PeerNode)context).isConnected();
+ return !((PeerNode)context).isReallyConnected();
+ }
+
+ public boolean isRestricted(PeerContext context) {
+ if(context == null) return false;
+ return (!((PeerNode)context).isReallyConnected() && ((PeerNode)context).isConnected());
}
}
Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/IPDetectorPluginManager.java (revision 9509)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/IPDetectorPluginManager.java (working copy)
@@ -153,7 +153,7 @@
// Unique IP address?
Peer peer = p.getPeer();
InetAddress addr = peer.getAddress(false);
- if(p.isConnected() && peer != null && addr != null && IPUtil.checkAddress(peer.getAddress())) {
+ if(p.isReallyConnected() && peer != null && addr != null && IPUtil.checkAddress(peer.getAddress())) {
// Connected node, on a real internet IP address.
// Is it internal?
boolean internal = false;
@@ -250,7 +250,7 @@
if(firstTimeMaybeFakePeers > 0) timeref = firstTimeMaybeFakePeers;
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, 0, 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 9509)
+++ /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 9509)
+++ /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 9509)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/NodeDispatcher.java (working copy)
@@ -50,7 +50,32 @@
Logger.minor(this, "Lost connection replying to "+m);
}
return true;
+ }else if(spec == DMT.FNPLinkPing) {
+ long id = m.getLong(DMT.PING_SEQNO);
+ Message msg = DMT.createFNPLinkPong(id);
+ try {
+ source.sendAsync(msg, null, 0, null);
+ } catch (NotConnectedException e) {
+ // Ignore
+ }
+ return true;
+ } else if(spec == DMT.FNPLinkPong) {
+ long id = m.getLong(DMT.PING_SEQNO);
+ source.receivedLinkPong(id);
+ return true;
+ } else if(spec == DMT.FNPDetectedIPAddress) {
+ Peer p = (Peer) m.getObject(DMT.EXTERNAL_ADDRESS);
+ source.setRemoteDetectedPeer(p);
+ node.redetectAddress();
+ } else if(spec == DMT.FNPVoid) {
+ return true;
+ } else if(spec == DMT.nodeToNodeTextMessage) {
+ node.receivedNodeToNodeTextMessage(m);
+ return true;
}
+
+ if(!source.isReallyConnected()) return false;
+
if(spec == DMT.FNPLocChangeNotification) {
double newLoc = m.getDouble(DMT.LOCATION);
source.updateLocation(newLoc);
@@ -79,29 +104,7 @@
return handleInsertRequest(m, false);
} else if(spec == DMT.FNPSSKInsertRequest) {
return handleInsertRequest(m, true);
- } else if(spec == DMT.FNPLinkPing) {
- long id = m.getLong(DMT.PING_SEQNO);
- Message msg = DMT.createFNPLinkPong(id);
- try {
- source.sendAsync(msg, null, 0, null);
- } catch (NotConnectedException e) {
- // Ignore
- }
- return true;
- } else if(spec == DMT.FNPLinkPong) {
- long id = m.getLong(DMT.PING_SEQNO);
- source.receivedLinkPong(id);
- return true;
- } else if(spec == DMT.FNPDetectedIPAddress) {
- Peer p = (Peer) m.getObject(DMT.EXTERNAL_ADDRESS);
- source.setRemoteDetectedPeer(p);
- node.redetectAddress();
- } else if(spec == DMT.FNPVoid) {
- return true;
- } else if(spec == DMT.nodeToNodeTextMessage) {
- node.receivedNodeToNodeTextMessage(m);
- return true;
- }
+ }
return false;
}
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 9509)
+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerManager.java (working copy)
@@ -180,7 +180,7 @@
}
public void addConnectedPeer(PeerNode pn) {
- if(!pn.isConnected()) {
+ if(!pn.isReallyConnected()) {
Logger.minor(this, "Not connected: "+pn);
return;
}
@@ -272,7 +272,7 @@
locs = new double[connectedPeers.length];
int x = 0;
for(int i=0;i