aboutsummaryrefslogtreecommitdiff
path: root/src/wallet
diff options
context:
space:
mode:
authorAntoine Riard <ariard@student.42.fr>2019-04-18 08:21:35 -0400
committerAntoine Riard <ariard@student.42.fr>2019-04-23 13:53:46 -0400
commit422677963a7b41e340b911b4cd53d29dd8d63f21 (patch)
tree90de47147f475d9b879fd7d65bb2015dad032d0b /src/wallet
parentedfe9438ca54274815f076fc21beb790df5aa0a2 (diff)
downloadbitcoin-422677963a7b41e340b911b4cd53d29dd8d63f21.tar.xz
refactor: replace isPotentialtip/waitForNotifications by higher method
Add GUARDED_BY(cs_wallet) annotation to m_last_block_processed, given that its now guarded by cs_wallet instead of cs_main
Diffstat (limited to 'src/wallet')
-rw-r--r--src/wallet/wallet.cpp20
-rw-r--r--src/wallet/wallet.h2
2 files changed, 5 insertions, 17 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index 4737e2f6f4..1ff02a129c 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -1288,24 +1288,12 @@ void CWallet::UpdatedBlockTip()
void CWallet::BlockUntilSyncedToCurrentChain() {
AssertLockNotHeld(cs_wallet);
-
- {
- // Skip the queue-draining stuff if we know we're caught up with
- // chainActive.Tip()...
- // We could also take cs_wallet here, and call m_last_block_processed
- // protected by cs_wallet instead of cs_main, but as long as we need
- // cs_main here anyway, it's easier to just call it cs_main-protected.
- auto locked_chain = chain().lock();
-
- if (!m_last_block_processed.IsNull() && locked_chain->isPotentialTip(m_last_block_processed)) {
- return;
- }
- }
-
- // ...otherwise put a callback in the validation interface queue and wait
+ // Skip the queue-draining stuff if we know we're caught up with
+ // chainActive.Tip(), otherwise put a callback in the validation interface queue and wait
// for the queue to drain enough to execute it (indicating we are caught up
// at least with the time we entered this function).
- chain().waitForNotifications();
+ uint256 last_block_hash = WITH_LOCK(cs_wallet, return m_last_block_processed);
+ chain().waitForNotificationsIfNewBlocksConnected(last_block_hash);
}
diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h
index 62ba0aa962..0d751a6d15 100644
--- a/src/wallet/wallet.h
+++ b/src/wallet/wallet.h
@@ -720,7 +720,7 @@ private:
* to have seen all transactions in the chain, but is only used to track
* live BlockConnected callbacks.
*/
- uint256 m_last_block_processed;
+ uint256 m_last_block_processed GUARDED_BY(cs_wallet);
public:
/*