From 10087bf9332a86e7ef4566f93cf6d0a1da1bf99f Mon Sep 17 00:00:00 2001 From: Giacomo Tazzari Date: Tue, 12 Aug 2014 17:21:05 +0200 Subject: [PATCH] Fixed peer hanging when receiving a bad synchronisation token --- libethereum/PeerSession.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libethereum/PeerSession.cpp b/libethereum/PeerSession.cpp index 281e834f0..e9703a830 100644 --- a/libethereum/PeerSession.cpp +++ b/libethereum/PeerSession.cpp @@ -564,7 +564,11 @@ void PeerSession::doRead() while (m_incoming.size() > 8) { if (m_incoming[0] != 0x22 || m_incoming[1] != 0x40 || m_incoming[2] != 0x08 || m_incoming[3] != 0x91) - doRead(); + { + cwarn << "INVALID SYNCHRONISATION TOKEN; expected = 22400891; received = " << toHex(bytesConstRef(m_incoming.data(), 4)); + disconnect(BadProtocol); + return; + } else { uint32_t len = fromBigEndian(bytesConstRef(m_incoming.data() + 4, 4));