All pastes #82625 Raw Edit

Anonymous

public java v1 · immutable
·published 2006-07-08 19:23 UTC
rendered paste body
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.<br /><br />\n"); 				  buf.append("</div>"); 				  buf.append("</div>");-			  } else if(!pn.isConnected() && !pn.isVerifiedIncompatibleNewerVersion() && !pn.isVerifiedIncompatibleOlderVersion()) {+			  } else if(!pn.isConnected()) { 				  ctx.getPageMaker().makeHead(buf, "Node To Node Text Message Failed"); 				   				  buf.append("<div class=\"infobox infobox-error\">");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<waiters.length;i++) { 				AwaitingCompletion awc = waiters[i];-				if(!awc.pn.isConnected()) {+				if(!awc.pn.isReallyConnected()) { 					Logger.normal(this, "Disconnected: "+awc.pn+" in "+CHKInsertSender.this); 					continue; 				}@@ -675,7 +675,7 @@ 					} 					if(noTimeLeft) { 						for(int i=0;i<waiters.length;i++) {-							if(!waiters[i].pn.isConnected()) continue;+							if(!waiters[i].pn.isReallyConnected()) continue; 							if(!waiters[i].completedTransfer) { 								waiters[i].completedTransfer(false); 							}@@ -741,7 +741,7 @@ 					if(noTimeLeft) { 						Logger.minor(this, "Overall timeout on "+CHKInsertSender.this); 						for(int i=0;i<waiters.length;i++) {-							if(!waiters[i].pn.isConnected()) continue;+							if(!waiters[i].pn.isReallyConnected()) continue; 							if(!waiters[i].receivedCompletionNotice) 								waiters[i].completed(false, false); 							if(!waiters[i].completedTransfer)@@ -765,7 +765,7 @@ 			boolean completedTransfers = true; 			synchronized(nodesWaitingForCompletion) { 				for(int i=0;i<waiters.length;i++) {-					if(!waiters[i].pn.isConnected()) continue;+					if(!waiters[i].pn.isReallyConnected()) continue; 					if(!waiters[i].completedTransfer) { 						completedTransfers = false; 						break;@@ -780,7 +780,7 @@ 						} 						completedTransfers = true; 						for(int i=0;i<waiters.length;i++) {-							if(!waiters[i].pn.isConnected()) continue;+							if(!waiters[i].pn.isReallyConnected()) continue; 							if(!waiters[i].completedTransfer) { 								completedTransfers = false; 								break;Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/FNPPacketMangler.java===================================================================--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/FNPPacketMangler.java	(revision 9509)+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/FNPPacketMangler.java	(working copy)@@ -126,7 +126,7 @@                 if(tryProcessAuth(buf, offset, length, pn, peer)) return;             }         }-        if(opn != null && !opn.isConnected())+        if(opn != null && !opn.isReallyConnected())             Logger.minor(this,"Unmatchable packet from "+peer);         else             Logger.error(this,"Unmatchable packet from "+peer);@@ -1126,7 +1126,7 @@             else log += (""+callbacks.length+(callbacks.length >= 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<peers.length;i++) { 							PeerNode p = peers[i];-							if((!p.isConnected()) || now - p.lastReceivedPacketTime() < 5*60*1000) {+							if((!p.isReallyConnected()) || now - p.lastReceivedPacketTime() < 5*60*1000) { 								// Not connected now but has been within the past 5 minutes. 								count++; 							}Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/InsertHandler.java===================================================================--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/InsertHandler.java	(revision 9509)+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/InsertHandler.java	(working copy)@@ -103,7 +103,7 @@                  if(msg == null) {         	try {-        		if(source.isConnected() && startTime > (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<peers.length;i++) {                                     PeerNode pn = peers[i];-                                    if(pn.isConnected()) {+                                    if(pn.isReallyConnected()) {                                         double ploc = pn.getLocation().getValue();                                         if(ploc == myLoc) {                                             myFlag = true;@@ -386,7 +386,7 @@                 }                  if(reply == null) {-                    if(pn.isConnected() && System.currentTimeMillis() - pn.timeLastConnected() > 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<conns.length;i++) {-            if(conns[i].isConnected())+            if(conns[i].isReallyConnected())                 locs[x++] = conns[i].getLocation().getValue();         }         // Wipe out any information contained in the order@@ -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<myPeers.length;i++) {             PeerNode pn = myPeers[i];             if(pn == exclude) continue;-            if(pn.isConnected()) {+            if(pn.isReallyConnected()) {                 v.add(pn);             } else {             	Logger.minor(this, "Excluding "+pn+" because is disconnected");@@ -311,7 +311,7 @@             }         }         int lengthWithoutExcluded = v.size();-        if(exclude != null && exclude.isConnected())+        if(exclude != null && exclude.isReallyConnected())             v.add(exclude);         PeerNode[] newConnectedPeers = new PeerNode[v.size()];         newConnectedPeers = (PeerNode[]) v.toArray(newConnectedPeers);@@ -348,7 +348,7 @@         PeerNode best = null;         for(int i=0;i<peers.length;i++) {             PeerNode p = peers[i];-            if(!p.isConnected()) continue;+            if(!p.isReallyConnected()) continue;             double diff = distance(p, loc);             if(diff < bestDiff) {                 best = p;@@ -423,7 +423,7 @@             	Logger.minor(this, "Skipping (req came from): "+p.getPeer());             	continue;             }-            if(!p.isConnected()) {+            if(!p.isReallyConnected()) {             	Logger.minor(this, "Skipping (not connected): "+p.getPeer());             	continue;             }@@ -580,7 +580,7 @@ 	public boolean anyConnectedPeers() { 		PeerNode[] conns = connectedPeers; 		for(int i=0;i<conns.length;i++) {-			if(conns[i].isConnected()) return true;+			if(conns[i].isReallyConnected()) return true; 		} 		return false; 	}Index: /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerNode.java===================================================================--- /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerNode.java	(revision 9509)+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerNode.java	(working copy)@@ -680,9 +680,18 @@      * Note possible deadlocks! PeerManager calls this, we call      * PeerManager in e.g. verified.      */-    public boolean isConnected() {+    public boolean isReallyConnected() {         return isConnected;     }+    +    /**+     * the node has established the session link : doesn't mean we can route to it!+     * check isReallyConnected() insteed.+     */+    public boolean isConnected() {+    	// maybe we should check the protocol versions too+        return (isConnected || (hasCompletedHandshake() && (isVerifiedIncompatibleNewerVersion() || isVerifiedIncompatibleOlderVersion())));+    }      /**      * Send a message, off-thread, to this node.@@ -694,7 +703,7 @@      */     public void sendAsync(Message msg, AsyncMessageCallback cb, int alreadyReportedBytes, ByteCounter ctr) throws NotConnectedException {         Logger.minor(this, "Sending async: "+msg+" : "+cb+" on "+this);-        if(!isConnected) throw new NotConnectedException();+        if(!isConnected()) throw new NotConnectedException();         MessageItem item = new MessageItem(msg, cb == null ? null : new AsyncMessageCallback[] {cb}, alreadyReportedBytes, ctr);         synchronized(routingBackoffSync) {         	reportBackoffStatus(System.currentTimeMillis());@@ -1113,13 +1122,11 @@         		Logger.normal(this, "Not connecting to "+this+" - reverse invalid version "+Version.getVersionString()+" for peer's lastGoodversion: "+lastGoodVersion);         		verifiedIncompatibleNewerVersion = true;         		isConnected = false;-        		setPeerNodeStatus(now);-        		node.peers.disconnected(this);-        		return false;         	} else {-        		verifiedIncompatibleNewerVersion = false;-        		setPeerNodeStatus(now);+        		verifiedIncompatibleNewerVersion = false;	         	}+        	+        	         	if(invalidVersion()) {         		Logger.normal(this, "Not connecting to "+this+" - invalid version "+version);         		verifiedIncompatibleOlderVersion = true;@@ -1124,13 +1131,11 @@         		Logger.normal(this, "Not connecting to "+this+" - invalid version "+version);         		verifiedIncompatibleOlderVersion = true;         		isConnected = false;-        		setPeerNodeStatus(now);-        		node.peers.disconnected(this);-        		return false;         	} else {         		verifiedIncompatibleOlderVersion = false;-        		setPeerNodeStatus(now);         	}+        	setPeerNodeStatus(now);+        	         	KeyTracker newTracker = new KeyTracker(this, encCipher, encKey);         	changedIP(replyTo);         	if(thisBootID != this.bootID) {@@ -1164,7 +1169,6 @@         		unverifiedTracker = null;         		if(previousTracker != null)         			previousTracker.deprecated();-        		isConnected = true;         		neverConnected = false;         		peerAddedTime = 0;  // don't store anymore         		setPeerNodeStatus(now);@@ -1170,7 +1174,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 {@@ -1196,7 +1200,8 @@             else return;             if(unverifiedTracker != null) return;         }-        sendInitialMessages();+        if(isReallyConnected())+        	sendInitialMessages();     }          /**@@ -1453,8 +1458,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() {@@ -1774,7 +1787,8 @@ 			pingAverage.report(now - startTime); 			Logger.minor(this, "Reporting ping time to "+this+" : "+(now - startTime)); 		}-		if(verifiedIncompatibleOlderVersion)+		+		if(isReallyConnected() && verifiedIncompatibleOlderVersion) 				forceDisconnect(); 	} @@ -2052,6 +2066,7 @@ 	 * This will return true if our lastGoodBuild has changed due to a timed mandatory. 	 */ 	public synchronized boolean shouldDisconnectNow() {+		if(!isReallyConnected()) return false; 		verifiedIncompatibleOlderVersion = invalidVersion(); 		return verifiedIncompatibleOlderVersion; 	}