Browse Source

Merge pull request #5511

e9c3215 [Wallet] sort pending wallet transactions before reaccepting (dexX7)
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
23c998d811
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 15
      src/wallet/wallet.cpp

15
src/wallet/wallet.cpp

@ -1101,6 +1101,9 @@ void CWallet::ReacceptWalletTransactions() @@ -1101,6 +1101,9 @@ void CWallet::ReacceptWalletTransactions()
if (!fBroadcastTransactions)
return;
LOCK2(cs_main, cs_wallet);
std::map<int64_t, CWalletTx*> mapSorted;
// Sort pending wallet transactions based on their initial wallet insertion order
BOOST_FOREACH(PAIRTYPE(const uint256, CWalletTx)& item, mapWallet)
{
const uint256& wtxid = item.first;
@ -1109,14 +1112,20 @@ void CWallet::ReacceptWalletTransactions() @@ -1109,14 +1112,20 @@ void CWallet::ReacceptWalletTransactions()
int nDepth = wtx.GetDepthInMainChain();
if (!wtx.IsCoinBase() && nDepth < 0)
if (!wtx.IsCoinBase() && nDepth < 0) {
mapSorted.insert(std::make_pair(wtx.nOrderPos, &wtx));
}
}
// Try to add wallet transactions to memory pool
BOOST_FOREACH(PAIRTYPE(const int64_t, CWalletTx*)& item, mapSorted)
{
// Try to add to memory pool
CWalletTx& wtx = *(item.second);
LOCK(mempool.cs);
wtx.AcceptToMemoryPool(false);
}
}
}
bool CWalletTx::RelayWalletTransaction()
{

Loading…
Cancel
Save