Remove oversized message detection from log and interface

pull/764/head
Pieter Wuille 5 years ago committed by Jonas Schnelli
parent b0e10ff4df
commit 6a91499496
No known key found for this signature in database
GPG Key ID: 1EB776BB03C7922D

@ -577,12 +577,6 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes, bool& complete
return false;
}
if (m_deserializer->OversizedMessageDetected()) {
LogPrint(BCLog::NET, "Oversized message from peer=%i, disconnecting\n", GetId());
m_deserializer->Reset();
return false;
}
pch += handled;
nBytes -= handled;
@ -655,9 +649,10 @@ int V1TransportDeserializer::readHeader(const char *pch, unsigned int nBytes)
return -1;
}
// reject messages larger than MAX_SIZE
if (hdr.nMessageSize > MAX_SIZE)
// reject messages larger than MAX_SIZE or MAX_PROTOCOL_MESSAGE_LENGTH
if (hdr.nMessageSize > MAX_SIZE || hdr.nMessageSize > MAX_PROTOCOL_MESSAGE_LENGTH) {
return -1;
}
// switch state to reading message data
in_data = true;

@ -642,8 +642,6 @@ public:
virtual void Reset() = 0;
// returns true if the current deserialization is complete
virtual bool Complete() const = 0;
// checks if the potential message in deserialization is oversized
virtual bool OversizedMessageDetected() const = 0;
// set the serialization context version
virtual void SetVersion(int version) = 0;
// read and deserialize data
@ -695,9 +693,6 @@ public:
hdrbuf.SetVersion(nVersionIn);
vRecv.SetVersion(nVersionIn);
}
bool OversizedMessageDetected() const {
return (in_data && hdr.nMessageSize > MAX_PROTOCOL_MESSAGE_LENGTH);
}
int Read(const char *pch, unsigned int nBytes) {
return in_data ? readData(pch, nBytes) : readHeader(pch, nBytes);
}

@ -101,11 +101,10 @@ class InvalidMessagesTest(BitcoinTestFramework):
msg_over_size = msg_unrecognized(str_data="b" * (valid_data_limit + 1))
assert len(msg_over_size.serialize()) == (msg_limit + 1)
with node.assert_debug_log(["Oversized message from peer=4, disconnecting"]):
# An unknown message type (or *any* message type) over
# MAX_PROTOCOL_MESSAGE_LENGTH should result in a disconnect.
node.p2p.send_message(msg_over_size)
node.p2p.wait_for_disconnect(timeout=4)
# An unknown message type (or *any* message type) over
# MAX_PROTOCOL_MESSAGE_LENGTH should result in a disconnect.
node.p2p.send_message(msg_over_size)
node.p2p.wait_for_disconnect(timeout=4)
node.disconnect_p2ps()
conn = node.add_p2p_connection(P2PDataStore())

Loading…
Cancel
Save