From 82953c07c2a2c00f0d7f58258c360bccda476de7 Mon Sep 17 00:00:00 2001 From: Tom Trevethan Date: Mon, 20 Oct 2025 23:09:10 +0100 Subject: [PATCH] re enabled p2p_invalid_messages.py, disabled PoW test, set elements message size and changed net_processing to check for continuous headers in elements mode --- src/net_processing.cpp | 11 +++++------ test/functional/p2p_invalid_messages.py | 5 +++-- test/functional/test_runner.py | 3 +-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/net_processing.cpp b/src/net_processing.cpp index f59fa62f34..dd07374f51 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -2491,12 +2491,6 @@ bool PeerManagerImpl::CheckHeadersPoW(const std::vector& headers, Misbehaving(peer, 100, "header with invalid proof of work"); return false; } - - // Are these headers connected to each other? - if (!CheckHeadersAreContinuous(headers)) { - Misbehaving(peer, 20, "non-continuous headers sequence"); - return false; - } return true; } @@ -2882,6 +2876,11 @@ void PeerManagerImpl::ProcessHeadersMessage(CNode& pfrom, Peer& peer, // always be punished.) return; } + // Check that headers are connected to each other in a continuous sequence + if(!CheckHeadersAreContinuous(headers)) { + Misbehaving(peer, 20, "non-continuous headers sequence"); + return; + } // If we are already too far ahead of where we want to be on headers, discard // the received headers. We can still get ahead by up to a single maximum-sized diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py index 2fb88b828f..7c34f54f28 100755 --- a/test/functional/p2p_invalid_messages.py +++ b/test/functional/p2p_invalid_messages.py @@ -75,7 +75,8 @@ class InvalidMessagesTest(BitcoinTestFramework): self.test_oversized_inv_msg() self.test_oversized_getdata_msg() self.test_oversized_headers_msg() - self.test_invalid_pow_headers_msg() + # ELEMENTS no PoW headers + # self.test_invalid_pow_headers_msg() self.test_noncontinuous_headers_msg() self.test_resource_exhaustion() @@ -137,7 +138,7 @@ class InvalidMessagesTest(BitcoinTestFramework): def test_size(self): self.log.info("Test message with oversized payload disconnects peer") conn = self.nodes[0].add_p2p_connection(P2PDataStore()) - with self.nodes[0].assert_debug_log(['Header error: Size too large (badmsg, 4000001 bytes)']): + with self.nodes[0].assert_debug_log(['Header error: Size too large (badmsg, 16000001 bytes)']): msg = msg_unrecognized(str_data="d" * (VALID_DATA_LIMIT + 1)) msg = conn.build_message(msg) conn.send_raw_message(msg) diff --git a/test/functional/test_runner.py b/test/functional/test_runner.py index 4e930a8d2f..b0f6984108 100755 --- a/test/functional/test_runner.py +++ b/test/functional/test_runner.py @@ -185,8 +185,7 @@ BASE_SCRIPTS = [ 'wallet_listtransactions.py --legacy-wallet', 'wallet_listtransactions.py --descriptors', # vv Tests less than 30s vv - # ELEMENTS: needs to be fixed - # 'p2p_invalid_messages.py', + 'p2p_invalid_messages.py', 'rpc_createmultisig.py', 'p2p_timeouts.py', 'wallet_dump.py --legacy-wallet',