Log block header in net_processing

Previously ChainstateManager::AcceptBlockHeader would log when it
saw a new header. This commit moves logging to the call site(s) in
net_processing. The next commits will then log which peer sent it
and whether it was part of a compact block.

This commit changes behavior:
- when multiple headers are received in a single message, only the
  last one is logged
- if any of the headers are invalid, the valid ones are not logged

This happens because net_processing calls ProcessNewBlockHeaders
with multiple headers, which then calls AcceptBlockHeader one
header at a time.

Additionally:
- when the header is received via a compact block, there's no more
  duplicate log (a later commit also unifies logging code paths)
This commit is contained in:
Sjors Provoost
2025-02-21 15:35:43 +01:00
parent cdc32994fe
commit 9d3e39c29c
3 changed files with 34 additions and 18 deletions

View File

@@ -1218,6 +1218,7 @@ public:
* @param[in] min_pow_checked True if proof-of-work anti-DoS checks have been done by caller for headers chain
* @param[out] state This may be set to an Error state if any error occurred processing them
* @param[out] ppindex If set, the pointer will be set to point to the last new block index object for the given headers
* @returns false if AcceptBlockHeader fails on any of the headers, true otherwise (including if headers were already known)
*/
bool ProcessNewBlockHeaders(std::span<const CBlockHeader> headers, bool min_pow_checked, BlockValidationState& state, const CBlockIndex** ppindex = nullptr) LOCKS_EXCLUDED(cs_main);