@@ -53,7 +53,8 @@ class PendingWalletTxImpl : public PendingWalletTx
53
53
WalletOrderForm order_form,
54
54
std::string& reject_reason) override
55
55
{
56
- LOCK2 (cs_main, m_wallet.cs_wallet );
56
+ auto locked_chain = m_wallet.chain ().lock ();
57
+ LOCK (m_wallet.cs_wallet );
57
58
CValidationState state;
58
59
if (!m_wallet.CommitTransaction (m_tx, std::move (value_map), std::move (order_form), m_key, g_connman.get (), state)) {
59
60
reject_reason = state.GetRejectReason ();
@@ -209,22 +210,26 @@ class WalletImpl : public Wallet
209
210
}
210
211
void lockCoin (const COutPoint& output) override
211
212
{
212
- LOCK2 (cs_main, m_wallet.cs_wallet );
213
+ auto locked_chain = m_wallet.chain ().lock ();
214
+ LOCK (m_wallet.cs_wallet );
213
215
return m_wallet.LockCoin (output);
214
216
}
215
217
void unlockCoin (const COutPoint& output) override
216
218
{
217
- LOCK2 (cs_main, m_wallet.cs_wallet );
219
+ auto locked_chain = m_wallet.chain ().lock ();
220
+ LOCK (m_wallet.cs_wallet );
218
221
return m_wallet.UnlockCoin (output);
219
222
}
220
223
bool isLockedCoin (const COutPoint& output) override
221
224
{
222
- LOCK2 (cs_main, m_wallet.cs_wallet );
225
+ auto locked_chain = m_wallet.chain ().lock ();
226
+ LOCK (m_wallet.cs_wallet );
223
227
return m_wallet.IsLockedCoin (output.hash , output.n );
224
228
}
225
229
void listLockedCoins (std::vector<COutPoint>& outputs) override
226
230
{
227
- LOCK2 (cs_main, m_wallet.cs_wallet );
231
+ auto locked_chain = m_wallet.chain ().lock ();
232
+ LOCK (m_wallet.cs_wallet );
228
233
return m_wallet.ListLockedCoins (outputs);
229
234
}
230
235
std::unique_ptr<PendingWalletTx> createTransaction (const std::vector<CRecipient>& recipients,
@@ -234,7 +239,8 @@ class WalletImpl : public Wallet
234
239
CAmount& fee,
235
240
std::string& fail_reason) override
236
241
{
237
- LOCK2 (cs_main, m_wallet.cs_wallet );
242
+ auto locked_chain = m_wallet.chain ().lock ();
243
+ LOCK (m_wallet.cs_wallet );
238
244
auto pending = MakeUnique<PendingWalletTxImpl>(m_wallet);
239
245
if (!m_wallet.CreateTransaction (recipients, pending->m_tx , pending->m_key , fee, change_pos,
240
246
fail_reason, coin_control, sign)) {
@@ -245,7 +251,8 @@ class WalletImpl : public Wallet
245
251
bool transactionCanBeAbandoned (const uint256& txid) override { return m_wallet.TransactionCanBeAbandoned (txid); }
246
252
bool abandonTransaction (const uint256& txid) override
247
253
{
248
- LOCK2 (cs_main, m_wallet.cs_wallet );
254
+ auto locked_chain = m_wallet.chain ().lock ();
255
+ LOCK (m_wallet.cs_wallet );
249
256
return m_wallet.AbandonTransaction (txid);
250
257
}
251
258
bool transactionCanBeBumped (const uint256& txid) override
@@ -274,7 +281,8 @@ class WalletImpl : public Wallet
274
281
}
275
282
CTransactionRef getTx (const uint256& txid) override
276
283
{
277
- LOCK2 (::cs_main, m_wallet.cs_wallet );
284
+ auto locked_chain = m_wallet.chain ().lock ();
285
+ LOCK (m_wallet.cs_wallet );
278
286
auto mi = m_wallet.mapWallet .find (txid);
279
287
if (mi != m_wallet.mapWallet .end ()) {
280
288
return mi->second .tx ;
@@ -283,7 +291,8 @@ class WalletImpl : public Wallet
283
291
}
284
292
WalletTx getWalletTx (const uint256& txid) override
285
293
{
286
- LOCK2 (::cs_main, m_wallet.cs_wallet );
294
+ auto locked_chain = m_wallet.chain ().lock ();
295
+ LOCK (m_wallet.cs_wallet );
287
296
auto mi = m_wallet.mapWallet .find (txid);
288
297
if (mi != m_wallet.mapWallet .end ()) {
289
298
return MakeWalletTx (m_wallet, mi->second );
@@ -292,7 +301,8 @@ class WalletImpl : public Wallet
292
301
}
293
302
std::vector<WalletTx> getWalletTxs () override
294
303
{
295
- LOCK2 (::cs_main, m_wallet.cs_wallet );
304
+ auto locked_chain = m_wallet.chain ().lock ();
305
+ LOCK (m_wallet.cs_wallet );
296
306
std::vector<WalletTx> result;
297
307
result.reserve (m_wallet.mapWallet .size ());
298
308
for (const auto & entry : m_wallet.mapWallet ) {
@@ -304,7 +314,7 @@ class WalletImpl : public Wallet
304
314
interfaces::WalletTxStatus& tx_status,
305
315
int & num_blocks) override
306
316
{
307
- TRY_LOCK (::cs_main, locked_chain);
317
+ auto locked_chain = m_wallet. chain (). lock ( true /* try_lock */ );
308
318
if (!locked_chain) {
309
319
return false ;
310
320
}
@@ -326,7 +336,8 @@ class WalletImpl : public Wallet
326
336
bool & in_mempool,
327
337
int & num_blocks) override
328
338
{
329
- LOCK2 (::cs_main, m_wallet.cs_wallet );
339
+ auto locked_chain = m_wallet.chain ().lock ();
340
+ LOCK (m_wallet.cs_wallet );
330
341
auto mi = m_wallet.mapWallet .find (txid);
331
342
if (mi != m_wallet.mapWallet .end ()) {
332
343
num_blocks = ::chainActive.Height ();
@@ -353,7 +364,7 @@ class WalletImpl : public Wallet
353
364
}
354
365
bool tryGetBalances (WalletBalances& balances, int & num_blocks) override
355
366
{
356
- TRY_LOCK (cs_main, locked_chain);
367
+ auto locked_chain = m_wallet. chain (). lock ( true /* try_lock */ );
357
368
if (!locked_chain) return false ;
358
369
TRY_LOCK (m_wallet.cs_wallet , locked_wallet);
359
370
if (!locked_wallet) {
@@ -370,27 +381,32 @@ class WalletImpl : public Wallet
370
381
}
371
382
isminetype txinIsMine (const CTxIn& txin) override
372
383
{
373
- LOCK2 (::cs_main, m_wallet.cs_wallet );
384
+ auto locked_chain = m_wallet.chain ().lock ();
385
+ LOCK (m_wallet.cs_wallet );
374
386
return m_wallet.IsMine (txin);
375
387
}
376
388
isminetype txoutIsMine (const CTxOut& txout) override
377
389
{
378
- LOCK2 (::cs_main, m_wallet.cs_wallet );
390
+ auto locked_chain = m_wallet.chain ().lock ();
391
+ LOCK (m_wallet.cs_wallet );
379
392
return m_wallet.IsMine (txout);
380
393
}
381
394
CAmount getDebit (const CTxIn& txin, isminefilter filter) override
382
395
{
383
- LOCK2 (::cs_main, m_wallet.cs_wallet );
396
+ auto locked_chain = m_wallet.chain ().lock ();
397
+ LOCK (m_wallet.cs_wallet );
384
398
return m_wallet.GetDebit (txin, filter);
385
399
}
386
400
CAmount getCredit (const CTxOut& txout, isminefilter filter) override
387
401
{
388
- LOCK2 (::cs_main, m_wallet.cs_wallet );
402
+ auto locked_chain = m_wallet.chain ().lock ();
403
+ LOCK (m_wallet.cs_wallet );
389
404
return m_wallet.GetCredit (txout, filter);
390
405
}
391
406
CoinsList listCoins () override
392
407
{
393
- LOCK2 (::cs_main, m_wallet.cs_wallet );
408
+ auto locked_chain = m_wallet.chain ().lock ();
409
+ LOCK (m_wallet.cs_wallet );
394
410
CoinsList result;
395
411
for (const auto & entry : m_wallet.ListCoins ()) {
396
412
auto & group = result[entry.first ];
@@ -403,7 +419,8 @@ class WalletImpl : public Wallet
403
419
}
404
420
std::vector<WalletTxOut> getCoins (const std::vector<COutPoint>& outputs) override
405
421
{
406
- LOCK2 (::cs_main, m_wallet.cs_wallet );
422
+ auto locked_chain = m_wallet.chain ().lock ();
423
+ LOCK (m_wallet.cs_wallet );
407
424
std::vector<WalletTxOut> result;
408
425
result.reserve (outputs.size ());
409
426
for (const auto & output : outputs) {
0 commit comments