Merge pull request #2216
d8becf2e
blockchain: fix cryptonight buffer leak on exit (moneromooo-monero)91aa90fc
blockchain: ensure all blocks get their longhash precalculated (moneromooo-monero)ff4bcaed
blockchain: pass correct height to get_block_longhash (moneromooo-monero)
This commit is contained in:
commit
8048de268a
@ -3555,19 +3555,17 @@ void Blockchain::set_enforce_dns_checkpoints(bool enforce_checkpoints)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
void Blockchain::block_longhash_worker(const uint64_t height, const std::vector<block> &blocks, std::unordered_map<crypto::hash, crypto::hash> &map) const
|
void Blockchain::block_longhash_worker(uint64_t height, const std::vector<block> &blocks, std::unordered_map<crypto::hash, crypto::hash> &map) const
|
||||||
{
|
{
|
||||||
TIME_MEASURE_START(t);
|
TIME_MEASURE_START(t);
|
||||||
slow_hash_allocate_state();
|
slow_hash_allocate_state();
|
||||||
|
|
||||||
//FIXME: height should be changing here, as get_block_longhash expects
|
|
||||||
// the height of the block passed to it
|
|
||||||
for (const auto & block : blocks)
|
for (const auto & block : blocks)
|
||||||
{
|
{
|
||||||
if (m_cancel)
|
if (m_cancel)
|
||||||
return;
|
break;
|
||||||
crypto::hash id = get_block_hash(block);
|
crypto::hash id = get_block_hash(block);
|
||||||
crypto::hash pow = get_block_longhash(block, height);
|
crypto::hash pow = get_block_longhash(block, height++);
|
||||||
map.emplace(id, pow);
|
map.emplace(id, pow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3759,9 +3757,11 @@ bool Blockchain::prepare_handle_incoming_blocks(const std::list<block_complete_e
|
|||||||
if (!blocks_exist)
|
if (!blocks_exist)
|
||||||
{
|
{
|
||||||
m_blocks_longhash_table.clear();
|
m_blocks_longhash_table.clear();
|
||||||
|
uint64_t thread_height = height;
|
||||||
for (uint64_t i = 0; i < threads; i++)
|
for (uint64_t i = 0; i < threads; i++)
|
||||||
{
|
{
|
||||||
thread_list.push_back(new boost::thread(attrs, boost::bind(&Blockchain::block_longhash_worker, this, height + (i * batches), std::cref(blocks[i]), std::ref(maps[i]))));
|
thread_list.push_back(new boost::thread(attrs, boost::bind(&Blockchain::block_longhash_worker, this, thread_height, std::cref(blocks[i]), std::ref(maps[i]))));
|
||||||
|
thread_height += blocks[i].size();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t j = 0; j < thread_list.size(); j++)
|
for (size_t j = 0; j < thread_list.size(); j++)
|
||||||
|
@ -846,7 +846,7 @@ namespace cryptonote
|
|||||||
* @param blocks the blocks to be hashed
|
* @param blocks the blocks to be hashed
|
||||||
* @param map return-by-reference the hashes for each block
|
* @param map return-by-reference the hashes for each block
|
||||||
*/
|
*/
|
||||||
void block_longhash_worker(const uint64_t height, const std::vector<block> &blocks,
|
void block_longhash_worker(uint64_t height, const std::vector<block> &blocks,
|
||||||
std::unordered_map<crypto::hash, crypto::hash> &map) const;
|
std::unordered_map<crypto::hash, crypto::hash> &map) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user