[freenet-cvs] r15443 - trunk/freenet/src/freenet/node

nextgens at freenetproject.org nextgens at freenetproject.org
Wed Oct 10 20:38:22 UTC 2007


Author: nextgens
Date: 2007-10-10 20:38:21 +0000 (Wed, 10 Oct 2007)
New Revision: 15443

Modified:
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
Log:
JFK: resend message3 if needed

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java	2007-10-10 17:06:17 UTC (rev 15442)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java	2007-10-10 20:38:21 UTC (rev 15443)
@@ -1001,7 +1001,7 @@
 	 * 
 	 */
 
-	private void sendJFKMessage3(int version,int negType,int phase,byte[] nonceInitiator,byte[] nonceResponder,byte[] hisExponential, byte[] authenticator, PeerNode pn, Peer replyTo)
+	private void sendJFKMessage3(int version,int negType,int phase,byte[] nonceInitiator,byte[] nonceResponder,byte[] hisExponential, byte[] authenticator, final PeerNode pn, final Peer replyTo)
 	{
 		if(logMINOR) Logger.minor(this, "Sending a JFK(3) message to "+pn);
 		BlockCipher c = null;
@@ -1012,7 +1012,7 @@
 		byte[] data = new byte[8 + pn.jfkMyRef.length];
 		System.arraycopy(Fields.longToBytes(node.bootID), 0, data, 0, 8);
 		System.arraycopy(pn.jfkMyRef, 0, data, 8, pn.jfkMyRef.length);
-		byte[] message3 = new byte[NONCE_SIZE*2 + // nI, nR
+		final byte[] message3 = new byte[NONCE_SIZE*2 + // nI, nR
 		                           DiffieHellman.modulusLengthInBytes()*2 + // g^i, g^r
 		                           HASH_LENGTH + // authenticator
 		                           HASH_LENGTH + // HMAC(cyphertext)
@@ -1097,6 +1097,15 @@
 				authenticatorCache.put(authenticator,message3);
 		}		
 		sendAuthPacket(1, 2, 2, message3, pn, replyTo);
+		
+		/* Re-send the packet after 5sec if we don't get any reply */
+		node.getTicker().queueTimedJob(new FastRunnable() {
+			public void run() {
+				if(pn.timeLastConnected() >= pn.lastReceivedPacketTime()) {
+					sendAuthPacket(1, 2, 2, message3, pn, replyTo);
+				}
+			}
+		}, 5*1000);
 	}
 
 	




More information about the cvs mailing list