mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-27 05:13:25 +01:00
wallet2: fix hang in wallet refresh
If the hashes received would move the current blockchain past the stop point, the short history would not be updated, since we do not expect another loop, but the daemon might return earlier hashes, causing the end index to not be enough to reach the threshold and this require another loop, which will download the same hashes and cause an infinite loop.
This commit is contained in:
parent
b4e1dc83d2
commit
5cbb17b946
@ -3114,6 +3114,7 @@ void wallet2::fast_refresh(uint64_t stop_height, uint64_t &blocks_start_height,
|
||||
MERROR("Blocks start before blockchain offset: " << blocks_start_height << " " << m_blockchain.offset());
|
||||
return;
|
||||
}
|
||||
current_index = blocks_start_height;
|
||||
if (hashes.size() + current_index < stop_height) {
|
||||
drop_from_short_history(short_chain_history, 3);
|
||||
std::vector<crypto::hash>::iterator right = hashes.end();
|
||||
@ -3123,7 +3124,6 @@ void wallet2::fast_refresh(uint64_t stop_height, uint64_t &blocks_start_height,
|
||||
short_chain_history.push_front(*right);
|
||||
}
|
||||
}
|
||||
current_index = blocks_start_height;
|
||||
for(auto& bl_id: hashes)
|
||||
{
|
||||
if(current_index >= m_blockchain.size())
|
||||
|
Loading…
Reference in New Issue
Block a user