From 8be3a7a027566676732e32298da479368952c07a Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Sat, 21 Jan 2012 17:56:19 +0100 Subject: [PATCH] Follow the protocol change that occurs on Feb 20th --- src/com/google/bitcoin/core/TCPNetworkConnection.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/com/google/bitcoin/core/TCPNetworkConnection.java b/src/com/google/bitcoin/core/TCPNetworkConnection.java index f1ead45c..b63c2071 100644 --- a/src/com/google/bitcoin/core/TCPNetworkConnection.java +++ b/src/com/google/bitcoin/core/TCPNetworkConnection.java @@ -50,6 +50,7 @@ public class TCPNetworkConnection implements NetworkConnection { // Given to the BitcoinSerializer to de-duplicate messages. private static final LinkedHashMap dedupeList = BitcoinSerializer.createDedupeList(); private BitcoinSerializer serializer = null; + private static final Date checksummingProtocolChangeDate = new Date(1329696000000L); /** * Connect to the given IP address using the port specified as part of the network parameters. Once construction @@ -79,8 +80,10 @@ public class TCPNetworkConnection implements NetworkConnection { out = socket.getOutputStream(); in = socket.getInputStream(); - // The version message never uses checksumming. Update checkumming property after version is read. + // The version message does not use checksumming, until Feb 2012 when it magically does. + // So pre-Feb 2012, update checkumming property after version is read. this.serializer = new BitcoinSerializer(params, false, dedupe ? dedupeList : null); + this.serializer.setUseChecksumming(Utils.now().after(checksummingProtocolChangeDate)); // Announce ourselves. This has to come first to connect to clients beyond v0.30.20.2 which wait to hear // from us until they send their version message back. @@ -118,7 +121,7 @@ public class TCPNetworkConnection implements NetworkConnection { } throw new ProtocolException("Peer does not have a copy of the block chain."); } - // newer clients use checksumming + // Newer clients use checksumming. serializer.setUseChecksumming(peerVersion >= 209); // Handshake is done! }