diff options
| author | j-berman <justinberman@protonmail.com> | 2025-12-11 21:32:23 -0800 |
|---|---|---|
| committer | j-berman <justinberman@protonmail.com> | 2025-12-11 21:37:20 -0800 |
| commit | d8d3cf97300480b9d3942c667978dd4860b76feb (patch) | |
| tree | b9a58cca4fb8e9fd5576d1ef7b62415a119c803f /src/cryptonote_core/cryptonote_core.cpp | |
| parent | ae08557f713a41f3f7267fcb08bbbe87f18d7932 (diff) | |
| download | monzero-core-d8d3cf97300480b9d3942c667978dd4860b76feb.tar.gz monzero-core-d8d3cf97300480b9d3942c667978dd4860b76feb.tar.xz monzero-core-d8d3cf97300480b9d3942c667978dd4860b76feb.zip | |
p2p: fix race causing dropped connections during sync
Without this commit:
1) read height from DB
2) add block to chain in separate thread
3) read chain for block id's and request them from peer
4) ERR in handle_response_chain_entry, peer's first block is the
one that was added to the chain, which has block idx=height from
step 1.
This commit reads the chain for height and highest block id's
in one go while holding the m_blockchain_lock to avoid the race.
Diffstat (limited to 'src/cryptonote_core/cryptonote_core.cpp')
| -rw-r--r-- | src/cryptonote_core/cryptonote_core.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp index 300fb2553..d30bc72a7 100644 --- a/src/cryptonote_core/cryptonote_core.cpp +++ b/src/cryptonote_core/cryptonote_core.cpp @@ -1536,9 +1536,9 @@ namespace cryptonote return m_mempool.get_pool_for_rpc(tx_infos, key_image_infos); } //----------------------------------------------------------------------------------------------- - bool core::get_short_chain_history(std::list<crypto::hash>& ids) const + bool core::get_short_chain_history(std::list<crypto::hash>& ids, uint64_t& current_height) const { - return m_blockchain_storage.get_short_chain_history(ids); + return m_blockchain_storage.get_short_chain_history(ids, current_height); } //----------------------------------------------------------------------------------------------- bool core::handle_get_objects(NOTIFY_REQUEST_GET_OBJECTS::request& arg, NOTIFY_RESPONSE_GET_OBJECTS::request& rsp, cryptonote_connection_context& context) |
