Database micro-optimization for "tx" network message
Open database once per "tx" message, rather than multiple times, in the case of orphan transaction presence. As a side effect, a now-unused CTransaction::AcceptToMemoryPool() variant is removed.
This commit is contained in:
parent
6b8e7eefcc
commit
9925d34a49
11
src/main.cpp
11
src/main.cpp
@ -592,12 +592,6 @@ bool CTransaction::AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs, bool* pfMi
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CTransaction::AcceptToMemoryPool(bool fCheckInputs, bool* pfMissingInputs)
|
||||
{
|
||||
CTxDB txdb("r");
|
||||
return AcceptToMemoryPool(txdb, fCheckInputs, pfMissingInputs);
|
||||
}
|
||||
|
||||
uint64 nPooledTx = 0;
|
||||
|
||||
bool CTransaction::AddToMemoryPoolUnchecked()
|
||||
@ -2522,6 +2516,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
||||
{
|
||||
vector<uint256> vWorkQueue;
|
||||
CDataStream vMsg(vRecv);
|
||||
CTxDB txdb("r");
|
||||
CTransaction tx;
|
||||
vRecv >> tx;
|
||||
|
||||
@ -2529,7 +2524,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
||||
pfrom->AddInventoryKnown(inv);
|
||||
|
||||
bool fMissingInputs = false;
|
||||
if (tx.AcceptToMemoryPool(true, &fMissingInputs))
|
||||
if (tx.AcceptToMemoryPool(txdb, true, &fMissingInputs))
|
||||
{
|
||||
SyncWithWallets(tx, NULL, true);
|
||||
RelayMessage(inv, vMsg);
|
||||
@ -2549,7 +2544,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
||||
CDataStream(vMsg) >> tx;
|
||||
CInv inv(MSG_TX, tx.GetHash());
|
||||
|
||||
if (tx.AcceptToMemoryPool(true))
|
||||
if (tx.AcceptToMemoryPool(txdb, true))
|
||||
{
|
||||
printf(" accepted orphan tx %s\n", inv.hash.ToString().substr(0,10).c_str());
|
||||
SyncWithWallets(tx, NULL, true);
|
||||
|
@ -684,7 +684,6 @@ public:
|
||||
bool ClientConnectInputs();
|
||||
bool CheckTransaction() const;
|
||||
bool AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs=true, bool* pfMissingInputs=NULL);
|
||||
bool AcceptToMemoryPool(bool fCheckInputs=true, bool* pfMissingInputs=NULL);
|
||||
|
||||
protected:
|
||||
const CTxOut& GetOutputFor(const CTxIn& input, const MapPrevTx& inputs) const;
|
||||
|
Loading…
Reference in New Issue
Block a user