From 67e1434b51c6fcafe61de6dc6cb08d84ad1877f5 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Fri, 26 Feb 2016 20:49:09 +0100 Subject: [PATCH] Peer: Receiving main protocol messages before version handshake completed is a protocol violation. --- core/src/main/java/org/bitcoinj/core/Peer.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/main/java/org/bitcoinj/core/Peer.java b/core/src/main/java/org/bitcoinj/core/Peer.java index 361ef627c..a512d8531 100644 --- a/core/src/main/java/org/bitcoinj/core/Peer.java +++ b/core/src/main/java/org/bitcoinj/core/Peer.java @@ -459,6 +459,12 @@ public class Peer extends PeerSocketHandler { currentFilteredBlock = null; } + // No further communication is possible until version handshake is complete. + if (!(m instanceof VersionMessage || m instanceof VersionAck + || (versionHandshakeFuture.isDone() && !versionHandshakeFuture.isCancelled()))) + throw new ProtocolException( + "Received " + m.getClass().getSimpleName() + " before version handshake is complete."); + if (m instanceof Ping) { processPing((Ping) m); } else if (m instanceof Pong) {