diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2013-01-14 16:52:33 -0500 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2013-01-15 09:10:22 -0500 |
commit | ce99358f4aa4182d6983fde3e33a8fdbe1dfe4c3 (patch) | |
tree | 3e7e864daea2f64627df70e7413dd82cd3be0de9 /src/main.h | |
parent | c83c3cbe9740cee7c168a93e26d6448f78170595 (diff) |
Remove IsFromMe() check in CTxMemPool::accept()
Fixes issue #2178 : attacker could penny-flood with invalid-signature
transactions to deduce which addresses belonged to your node.
I'm committing this early for code review; I still need to write up
a test plan.
Executive summary of fix: check all transactions received from the network
for penny-flood rate-limiting before adding to the memory pool. But do NOT
ratelimit transactions added to the memory pool:
- because of blockchain reorgs
- stored in the wallet and added at startup
- sent from the GUI or one of the send* RPC commands (CWallet::CommitTransaction)
The limit-free-transactions code really should be a method on CNode, with
counters per-peer. But that is a bigger change for another day.
Diffstat (limited to 'src/main.h')
-rw-r--r-- | src/main.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/main.h b/src/main.h index 3290b16318..44fa5c1de3 100644 --- a/src/main.h +++ b/src/main.h @@ -649,7 +649,7 @@ public: bool CheckTransaction() const; // Try to accept this transaction into the memory pool - bool AcceptToMemoryPool(bool fCheckInputs=true, bool* pfMissingInputs=NULL); + bool AcceptToMemoryPool(bool fCheckInputs=true, bool fLimitFree = true, bool* pfMissingInputs=NULL); protected: static const CTxOut &GetOutputFor(const CTxIn& input, CCoinsViewCache& mapInputs); @@ -1103,7 +1103,7 @@ public: int GetDepthInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChain(pindexRet); } bool IsInMainChain() const { return GetDepthInMainChain() > 0; } int GetBlocksToMaturity() const; - bool AcceptToMemoryPool(bool fCheckInputs=true); + bool AcceptToMemoryPool(bool fCheckInputs=true, bool fLimitFree=true); }; @@ -1882,7 +1882,7 @@ public: std::map<uint256, CTransaction> mapTx; std::map<COutPoint, CInPoint> mapNextTx; - bool accept(CTransaction &tx, bool fCheckInputs, bool* pfMissingInputs); + bool accept(CTransaction &tx, bool fCheckInputs, bool fLimitFree, bool* pfMissingInputs); bool addUnchecked(const uint256& hash, CTransaction &tx); bool remove(const CTransaction &tx, bool fRecursive = false); bool removeConflicts(const CTransaction &tx); |