Browse Source

Refuse to retransmit transactions without vins

Versions of bitcoin before 0.8.6 have a bug that inserted
empty transactions into the vtxPrev in the wallet, which will cause the node to be
banned when retransmitted, hence add a check for !tx.vin.empty()
before RelayTransaction.
0.8
Wladimir J. van der Laan 11 years ago committed by Warren Togami
parent
commit
f1e8edc966
  1. 5
      src/wallet.cpp

5
src/wallet.cpp

@ -847,7 +847,10 @@ void CWalletTx::RelayWalletTransaction() @@ -847,7 +847,10 @@ void CWalletTx::RelayWalletTransaction()
{
BOOST_FOREACH(const CMerkleTx& tx, vtxPrev)
{
if (!tx.IsCoinBase())
// Important: versions of bitcoin before 0.8.6 had a bug that inserted
// empty transactions into the vtxPrev, which will cause the node to be
// banned when retransmitted, hence the check for !tx.vin.empty()
if (!tx.IsCoinBase() && !tx.vin.empty())
if (tx.GetDepthInMainChain() == 0)
RelayTransaction((CTransaction)tx, tx.GetHash());
}

Loading…
Cancel
Save