All pastes #80885 Raw Edit

Anonymous

public java v1 · immutable
·published 2006-07-06 22:27 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 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.<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 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<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; 				}@@ -668,7 +668,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); 							}@@ -734,7 +734,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)@@ -758,7 +758,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;@@ -773,7 +773,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 9476)+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/FNPPacketMangler.java	(working copy)@@ -818,10 +818,14 @@                     int packetNumber = kt.allocateOutgoingPacketNumberNeverBlock();                     this.processOutgoingPreformatted(buf, 0, buf.length, pn.getCurrentKeyTracker(), packetNumber, mi.cb);                 } catch (NotConnectedException e) {-                    Logger.minor(this, "Caught "+e+" while sending messages, requeueing");-                    // Requeue-                    if(!dontRequeue)-                    	pn.requeueMessageItems(messages, i, messages.length-i, false, "NotConnectedException");+                	if(pn.isReallyConnected()){+                		Logger.minor(this, "Caught "+e+" while sending messages, requeueing");+                		// Requeue+                		if(!dontRequeue)+                			pn.requeueMessageItems(messages, i, messages.length-i, false, "NotConnectedException");+                	}else{+                		Logger.normal(this,"Caught a message whereas there shouldn't be any (incompatible builds), discarding :"+mi.msg);+                	}                     return;                 } catch (WouldBlockException e) {                     Logger.minor(this, "Caught "+e+" while sending messages, requeueing", e);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 9476)+++ /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);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<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 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<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 9476)+++ /home/nextgens/src/eclipse/Freenet 0.7/src/freenet/node/PeerNode.java	(working copy)@@ -112,8 +112,7 @@     /** Are we connected? If not, we need to start trying to      * handshake.      */-    private boolean isConnected;-    +    private boolean isReallyConnected;     /**      * ARK fetcher.      */@@ -368,7 +367,7 @@         swapRequestsInterval = new SimpleRunningAverage(50, Node.MIN_INTERVAL_BETWEEN_INCOMING_SWAP_REQUESTS);                  // Not connected yet; need to handshake-        isConnected = false;+        isReallyConnected = false;         node.addPeerNodeStatus(Node.PEER_NODE_STATUS_DISCONNECTED, this);                         messagesToSendNow = new LinkedList();@@ -680,10 +679,27 @@      * Note possible deadlocks! PeerManager calls this, we call      * PeerManager in e.g. verified.      */+    public boolean isReallyConnected() {+        return isReallyConnected;+    }+         public boolean isConnected() {-        return isConnected;+        return isReallyConnected || (hasCompletedHandshake() && (isVerifiedIncompatibleNewerVersion() || isVerifiedIncompatibleOlderVersion()));     }-+    +    private synchronized boolean isSendable(Message msg){+    	// The easy case+    	if(isReallyConnected) return true;+    	+    	String mt = msg.getSpec().getName();+    	if((hasCompletedHandshake()&& (isVerifiedIncompatibleNewerVersion()||isVerifiedIncompatibleOlderVersion())) &&+    			(mt.equals(DMT.pong)|| mt.equals(DMT.ping)|| mt.equals(DMT.NODE_TO_NODE_MESSAGE_TYPE) || mt.equals(DMT.PING_SEQNO)||+    					mt.equals("FNPDetectedIPAddress")||mt.equals("FNPLocationChangeNotification")))+    		return true;+    	+    	return false;+    }+         /**      * Send a message, off-thread, to this node.      * @param msg The message to be sent.@@ -690,7 +706,11 @@      */     public void sendAsync(Message msg, AsyncMessageCallback cb) throws NotConnectedException {         Logger.minor(this, "Sending async: "+msg+" : "+cb+" on "+this);-        if(!isConnected) throw new NotConnectedException();+        if(!isConnected()) throw new NotConnectedException();+        if(!isSendable(msg)){+        	Logger.minor(this, "The message can't be processed, we are connected to an incompatible version, discarding.");+        	return;+        }         MessageItem item = new MessageItem(msg, cb == null ? null : new AsyncMessageCallback[] {cb}); 	synchronized(routingBackoffSync) { 		reportBackoffStatus(System.currentTimeMillis());@@ -727,7 +747,7 @@         node.peers.disconnected(this);         synchronized(this) {         	// Force renegotiation.-            isConnected = false;+            isReallyConnected = false;             setPeerNodeStatus(now);             // Prevent sending packets to the node until that happens.             if(currentTracker != null)@@ -791,7 +811,11 @@         synchronized(messagesToSendNow) {             for(int i=offset;i<offset+length;i++)                 if(messages[i] != null)-                    messagesToSendNow.add(messages[i]);+                	if(isSendable(messages[i].msg)){+                		messagesToSendNow.add(messages[i]);+                	}else{+                		Logger.error(this,"Unable to requeue the message "+messages[i].msg+", discarding");+                	}         }     } @@ -825,8 +849,8 @@      */     public boolean shouldSendHandshake() {         long now = System.currentTimeMillis();-        return (!isConnected) &&-				(!isDisabled) &&  // don't connect to disabled peers+        return (!isConnected()) &&+        		(!isDisabled) &&  // don't connect to disabled peers 				(!isListenOnly) &&  // don't send handshake requests to isListenOnly peers                 (handshakeIPs != null) &&                 (now > 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;