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);
}