From 1cfacf4118b2c20054f4fd98fa9151626c2ec21d Mon Sep 17 00:00:00 2001 From: SChernykh Date: Sat, 28 Jan 2023 09:55:01 +0100 Subject: [PATCH] Code cleanup and fixes --- src/block_template.cpp | 5 +++++ src/p2p_server.cpp | 7 ++++++- src/pool_block.cpp | 6 +----- src/pool_block.h | 1 - 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/block_template.cpp b/src/block_template.cpp index 0e4b880..ec21e14 100644 --- a/src/block_template.cpp +++ b/src/block_template.cpp @@ -309,6 +309,11 @@ void BlockTemplate::update(const MinerData& data, const Mempool& mempool, Wallet FORCEINLINE Precalc(Precalc&& rhs) noexcept : txKeySec(rhs.txKeySec), counter(rhs.counter.load()), shares(rhs.shares) { rhs.shares = nullptr; } FORCEINLINE ~Precalc() { free_hook(shares); } + // Disable any other way of copying/moving Precalc + Precalc(const Precalc&) = delete; + Precalc& operator=(const Precalc&) = delete; + Precalc& operator=(Precalc&&) = delete; + FORCEINLINE void operator()() { if (shares) { diff --git a/src/p2p_server.cpp b/src/p2p_server.cpp index 24bcb5f..76a906b 100644 --- a/src/p2p_server.cpp +++ b/src/p2p_server.cpp @@ -871,7 +871,7 @@ void P2PServer::on_broadcast() } for (Broadcast* data : broadcast_queue) { - send(client, [client, data](void* buf, size_t buf_size) -> size_t + const bool result = send(client, [client, data](void* buf, size_t buf_size) -> size_t { uint8_t* p0 = reinterpret_cast(buf); uint8_t* p = p0; @@ -930,6 +930,11 @@ void P2PServer::on_broadcast() return p - p0; }); + if (!result) { + LOGWARN(5, "failed to broadcast to " << static_cast(client->m_addrString) << ", disconnecting"); + client->close(); + break; + } } } } diff --git a/src/pool_block.cpp b/src/pool_block.cpp index a69ad94..4e04a42 100644 --- a/src/pool_block.cpp +++ b/src/pool_block.cpp @@ -106,10 +106,6 @@ PoolBlock& PoolBlock::operator=(const PoolBlock& b) return *this; } -PoolBlock::~PoolBlock() -{ -} - std::vector PoolBlock::serialize_mainchain_data(size_t* header_size, size_t* miner_tx_size, int* outputs_offset, int* outputs_blob_size, const uint32_t* nonce, const uint32_t* extra_nonce) const { std::vector data; @@ -206,7 +202,7 @@ std::vector PoolBlock::serialize_mainchain_data(size_t* header_size, si data.insert(data.end(), t + HASH_SIZE, t + m_transactions.size() * HASH_SIZE); #if POOL_BLOCK_DEBUG - if (!nonce && !extra_nonce && !m_mainChainDataDebug.empty() && (data != m_mainChainDataDebug)) { + if ((nonce == &m_nonce) && (extra_nonce == &m_extraNonce) && !m_mainChainDataDebug.empty() && (data != m_mainChainDataDebug)) { LOGERR(1, "serialize_mainchain_data() has a bug, fix it!"); PANIC_STOP(); } diff --git a/src/pool_block.h b/src/pool_block.h index 9186a0d..b5c1327 100644 --- a/src/pool_block.h +++ b/src/pool_block.h @@ -58,7 +58,6 @@ struct DifficultyData struct PoolBlock { PoolBlock(); - ~PoolBlock(); PoolBlock(const PoolBlock& b); PoolBlock& operator=(const PoolBlock& b);