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;