diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2012-01-10 20:45:55 -0500 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2012-01-13 10:22:24 -0500 |
commit | 4063460534768e2062585573548c293b39313a41 (patch) | |
tree | d7690c9ee4254d0169d0c16a84c2996383da1b87 | |
parent | 8d7849b6db5f54dc32fe4f8c6c7283068473cd21 (diff) |
Refactor: needing to call ConnectInputs to process coinbase transactions was counter-intuitive
-rw-r--r-- | src/main.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/src/main.cpp b/src/main.cpp index 3a43f5eb36..3c3f066042 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1111,17 +1111,6 @@ bool CTransaction::ConnectInputs(MapPrevTx inputs, return DoS(100, error("ConnectInputs() : nFees out of range")); } - if (fBlock) - { - // Add transaction to changes - mapTestPool[GetHash()] = CTxIndex(posThisTx, vout.size()); - } - else if (fMiner) - { - // Add transaction to test pool - mapTestPool[GetHash()] = CTxIndex(CDiskTxPos(1,1,1), vout.size()); - } - return true; } @@ -1226,12 +1215,12 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) // (AcceptBlock() is always called before ConnectBlock()) nFees += tx.GetValueIn(mapInputs)-tx.GetValueOut(); + + if (!tx.ConnectInputs(mapInputs, mapQueuedChanges, posThisTx, pindex, true, false)) + return false; } - // It seems wrong that ConnectInputs must be called on the coinbase transaction - // (which has no inputs) : TODO: refactor the code at the end of ConnectInputs out... - if (!tx.ConnectInputs(mapInputs, mapQueuedChanges, posThisTx, pindex, true, false)) - return false; + mapQueuedChanges[tx.GetHash()] = CTxIndex(posThisTx, tx.vout.size()); } // Write queued txindex changes @@ -3087,6 +3076,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey) if (!tx.ConnectInputs(mapInputs, mapTestPoolTmp, CDiskTxPos(1,1,1), pindexPrev, false, true)) continue; + mapTestPoolTmp[tx.GetHash()] = CTxIndex(CDiskTxPos(1,1,1), tx.vout.size()); swap(mapTestPool, mapTestPoolTmp); // Added |