diff options
author | ptschip <peter.tschipper@gmail.com> | 2015-10-16 18:18:16 -0700 |
---|---|---|
committer | ptschip <peter.tschipper@gmail.com> | 2016-01-06 10:15:00 -0800 |
commit | 2dfeaa1ad03e7768fb28bfde7f929ac57dfff120 (patch) | |
tree | 3c7d6bf3ec77dd2dfd919c3d7bf8da3e3dc44f87 | |
parent | 7a5040155ed59f8c9c51734bb2ee29f1593eaa6a (diff) |
limitfreerelay edge case bugfix:
If a new transaction will cause limitfreerelay
to be exceeded it should not be accepted
into the memory pool and the byte counter
should be updated only after the fact.
-rw-r--r-- | src/main.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp index 41fc0b8098..08a95aff2b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1016,7 +1016,7 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState &state, const C nLastTime = nNow; // -limitfreerelay unit is thousand-bytes-per-minute // At default rate it would take over a month to fill 1GB - if (dFreeCount >= GetArg("-limitfreerelay", DEFAULT_LIMITFREERELAY) * 10 * 1000) + if (dFreeCount + nSize >= GetArg("-limitfreerelay", DEFAULT_LIMITFREERELAY) * 10 * 1000) return state.DoS(0, false, REJECT_INSUFFICIENTFEE, "rate limited free transaction"); LogPrint("mempool", "Rate limit dFreeCount: %g => %g\n", dFreeCount, dFreeCount+nSize); dFreeCount += nSize; |