mirror of https://github.com/SChernykh/p2pool
PoolBlock: removed unnecessary mutex
parent
f95d56d1eb
commit
c855bb769a
|
@ -1578,6 +1578,7 @@ void P2PServer::P2PClient::send_handshake_solution(const uint8_t (&challenge)[CH
|
||||||
P2PClient* client;
|
P2PClient* client;
|
||||||
P2PServer* server;
|
P2PServer* server;
|
||||||
uint32_t reset_counter;
|
uint32_t reset_counter;
|
||||||
|
bool is_incoming;
|
||||||
|
|
||||||
uint8_t challenge[CHALLENGE_SIZE];
|
uint8_t challenge[CHALLENGE_SIZE];
|
||||||
uint64_t salt;
|
uint64_t salt;
|
||||||
|
@ -1590,6 +1591,7 @@ void P2PServer::P2PClient::send_handshake_solution(const uint8_t (&challenge)[CH
|
||||||
work->client = this;
|
work->client = this;
|
||||||
work->server = server;
|
work->server = server;
|
||||||
work->reset_counter = m_resetCounter.load();
|
work->reset_counter = m_resetCounter.load();
|
||||||
|
work->is_incoming = m_isIncoming;
|
||||||
|
|
||||||
memcpy(work->challenge, challenge, CHALLENGE_SIZE);
|
memcpy(work->challenge, challenge, CHALLENGE_SIZE);
|
||||||
work->salt = server->get_random64();
|
work->salt = server->get_random64();
|
||||||
|
@ -1630,7 +1632,7 @@ void P2PServer::P2PClient::send_handshake_solution(const uint8_t (&challenge)[CH
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (work->client->m_isIncoming) {
|
if (work->is_incoming) {
|
||||||
// This is an incoming connection, so it must do PoW, not us
|
// This is an incoming connection, so it must do PoW, not us
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,12 +54,10 @@ PoolBlock::PoolBlock()
|
||||||
, m_precalculated(false)
|
, m_precalculated(false)
|
||||||
, m_localTimestamp(seconds_since_epoch())
|
, m_localTimestamp(seconds_since_epoch())
|
||||||
{
|
{
|
||||||
uv_mutex_init_checked(&m_lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PoolBlock::PoolBlock(const PoolBlock& b)
|
PoolBlock::PoolBlock(const PoolBlock& b)
|
||||||
{
|
{
|
||||||
uv_mutex_init_checked(&m_lock);
|
|
||||||
operator=(b);
|
operator=(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,11 +68,6 @@ PoolBlock& PoolBlock::operator=(const PoolBlock& b)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int lock_result = uv_mutex_trylock(&b.m_lock);
|
|
||||||
if (lock_result) {
|
|
||||||
LOGERR(1, "operator= uv_mutex_trylock failed. Fix the code!");
|
|
||||||
}
|
|
||||||
|
|
||||||
#if POOL_BLOCK_DEBUG
|
#if POOL_BLOCK_DEBUG
|
||||||
m_mainChainDataDebug = b.m_mainChainDataDebug;
|
m_mainChainDataDebug = b.m_mainChainDataDebug;
|
||||||
m_sideChainDataDebug = b.m_sideChainDataDebug;
|
m_sideChainDataDebug = b.m_sideChainDataDebug;
|
||||||
|
@ -110,25 +103,14 @@ PoolBlock& PoolBlock::operator=(const PoolBlock& b)
|
||||||
|
|
||||||
m_localTimestamp = seconds_since_epoch();
|
m_localTimestamp = seconds_since_epoch();
|
||||||
|
|
||||||
if (lock_result == 0) {
|
|
||||||
uv_mutex_unlock(&b.m_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
PoolBlock::~PoolBlock()
|
PoolBlock::~PoolBlock()
|
||||||
{
|
{
|
||||||
uv_mutex_destroy(&m_lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<uint8_t> 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<uint8_t> 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
|
||||||
{
|
|
||||||
MutexLock lock(m_lock);
|
|
||||||
return serialize_mainchain_data_nolock(header_size, miner_tx_size, outputs_offset, outputs_blob_size, nonce, extra_nonce);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<uint8_t> PoolBlock::serialize_mainchain_data_nolock(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<uint8_t> data;
|
std::vector<uint8_t> data;
|
||||||
data.reserve(128 + m_outputs.size() * 39 + m_transactions.size() * HASH_SIZE);
|
data.reserve(128 + m_outputs.size() * 39 + m_transactions.size() * HASH_SIZE);
|
||||||
|
@ -237,8 +219,6 @@ std::vector<uint8_t> PoolBlock::serialize_sidechain_data() const
|
||||||
{
|
{
|
||||||
std::vector<uint8_t> data;
|
std::vector<uint8_t> data;
|
||||||
|
|
||||||
MutexLock lock(m_lock);
|
|
||||||
|
|
||||||
data.reserve((m_uncles.size() + 4) * HASH_SIZE + 36);
|
data.reserve((m_uncles.size() + 4) * HASH_SIZE + 36);
|
||||||
|
|
||||||
const hash& spend = m_minerWallet.spend_public_key();
|
const hash& spend = m_minerWallet.spend_public_key();
|
||||||
|
@ -321,10 +301,8 @@ bool PoolBlock::get_pow_hash(RandomX_Hasher_Base* hasher, uint64_t height, const
|
||||||
size_t blob_size = 0;
|
size_t blob_size = 0;
|
||||||
|
|
||||||
{
|
{
|
||||||
MutexLock lock(m_lock);
|
|
||||||
|
|
||||||
size_t header_size, miner_tx_size;
|
size_t header_size, miner_tx_size;
|
||||||
const std::vector<uint8_t> mainchain_data = serialize_mainchain_data_nolock(&header_size, &miner_tx_size, nullptr, nullptr, nullptr, nullptr);
|
const std::vector<uint8_t> mainchain_data = serialize_mainchain_data(&header_size, &miner_tx_size, nullptr, nullptr, nullptr, nullptr);
|
||||||
|
|
||||||
if (!header_size || !miner_tx_size || (mainchain_data.size() < header_size + miner_tx_size)) {
|
if (!header_size || !miner_tx_size || (mainchain_data.size() < header_size + miner_tx_size)) {
|
||||||
LOGERR(1, "tried to calculate PoW of uninitialized block");
|
LOGERR(1, "tried to calculate PoW of uninitialized block");
|
||||||
|
|
|
@ -63,8 +63,6 @@ struct PoolBlock
|
||||||
PoolBlock(const PoolBlock& b);
|
PoolBlock(const PoolBlock& b);
|
||||||
PoolBlock& operator=(const PoolBlock& b);
|
PoolBlock& operator=(const PoolBlock& b);
|
||||||
|
|
||||||
mutable uv_mutex_t m_lock;
|
|
||||||
|
|
||||||
#if POOL_BLOCK_DEBUG
|
#if POOL_BLOCK_DEBUG
|
||||||
std::vector<uint8_t> m_mainChainDataDebug;
|
std::vector<uint8_t> m_mainChainDataDebug;
|
||||||
std::vector<uint8_t> m_sideChainDataDebug;
|
std::vector<uint8_t> m_sideChainDataDebug;
|
||||||
|
@ -138,7 +136,6 @@ struct PoolBlock
|
||||||
uint64_t m_localTimestamp;
|
uint64_t m_localTimestamp;
|
||||||
|
|
||||||
std::vector<uint8_t> serialize_mainchain_data(size_t* header_size = nullptr, size_t* miner_tx_size = nullptr, int* outputs_offset = nullptr, int* outputs_blob_size = nullptr, const uint32_t* nonce = nullptr, const uint32_t* extra_nonce = nullptr) const;
|
std::vector<uint8_t> serialize_mainchain_data(size_t* header_size = nullptr, size_t* miner_tx_size = nullptr, int* outputs_offset = nullptr, int* outputs_blob_size = nullptr, const uint32_t* nonce = nullptr, const uint32_t* extra_nonce = nullptr) const;
|
||||||
std::vector<uint8_t> serialize_mainchain_data_nolock(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<uint8_t> serialize_sidechain_data() const;
|
std::vector<uint8_t> serialize_sidechain_data() const;
|
||||||
|
|
||||||
int deserialize(const uint8_t* data, size_t size, const SideChain& sidechain, uv_loop_t* loop, bool compact);
|
int deserialize(const uint8_t* data, size_t size, const SideChain& sidechain, uv_loop_t* loop, bool compact);
|
||||||
|
|
|
@ -61,8 +61,6 @@ int PoolBlock::deserialize(const uint8_t* data, size_t size, const SideChain& si
|
||||||
|
|
||||||
#define READ_BUF(buf, size) do { if (!read_buf((buf), (size))) return __LINE__; } while(0)
|
#define READ_BUF(buf, size) do { if (!read_buf((buf), (size))) return __LINE__; } while(0)
|
||||||
|
|
||||||
MutexLock lock(m_lock);
|
|
||||||
|
|
||||||
READ_BYTE(m_majorVersion);
|
READ_BYTE(m_majorVersion);
|
||||||
if (m_majorVersion > HARDFORK_SUPPORTED_VERSION) return __LINE__;
|
if (m_majorVersion > HARDFORK_SUPPORTED_VERSION) return __LINE__;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue