|
|
@ -2995,14 +2995,14 @@ bool SendMessages(CNode* pto, CConnman& connman) |
|
|
|
if (pto->nVersion >= FEEFILTER_VERSION && GetBoolArg("-feefilter", DEFAULT_FEEFILTER) && |
|
|
|
if (pto->nVersion >= FEEFILTER_VERSION && GetBoolArg("-feefilter", DEFAULT_FEEFILTER) && |
|
|
|
!(pto->fWhitelisted && GetBoolArg("-whitelistforcerelay", DEFAULT_WHITELISTFORCERELAY))) { |
|
|
|
!(pto->fWhitelisted && GetBoolArg("-whitelistforcerelay", DEFAULT_WHITELISTFORCERELAY))) { |
|
|
|
CAmount currentFilter = mempool.GetMinFee(GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000).GetFeePerK(); |
|
|
|
CAmount currentFilter = mempool.GetMinFee(GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000).GetFeePerK(); |
|
|
|
// If we don't allow free transactions, then we always have a fee filter of at least minRelayTxFee
|
|
|
|
|
|
|
|
if (GetArg("-limitfreerelay", DEFAULT_LIMITFREERELAY) <= 0) |
|
|
|
|
|
|
|
currentFilter = std::max(currentFilter, ::minRelayTxFee.GetFeePerK()); |
|
|
|
|
|
|
|
int64_t timeNow = GetTimeMicros(); |
|
|
|
int64_t timeNow = GetTimeMicros(); |
|
|
|
if (timeNow > pto->nextSendTimeFeeFilter) { |
|
|
|
if (timeNow > pto->nextSendTimeFeeFilter) { |
|
|
|
static CFeeRate default_feerate(DEFAULT_MIN_RELAY_TX_FEE); |
|
|
|
static CFeeRate default_feerate(DEFAULT_MIN_RELAY_TX_FEE); |
|
|
|
static FeeFilterRounder filterRounder(default_feerate); |
|
|
|
static FeeFilterRounder filterRounder(default_feerate); |
|
|
|
CAmount filterToSend = filterRounder.round(currentFilter); |
|
|
|
CAmount filterToSend = filterRounder.round(currentFilter); |
|
|
|
|
|
|
|
// If we don't allow free transactions, then we always have a fee filter of at least minRelayTxFee
|
|
|
|
|
|
|
|
if (GetArg("-limitfreerelay", DEFAULT_LIMITFREERELAY) <= 0) |
|
|
|
|
|
|
|
filterToSend = std::max(filterToSend, ::minRelayTxFee.GetFeePerK()); |
|
|
|
if (filterToSend != pto->lastSentFeeFilter) { |
|
|
|
if (filterToSend != pto->lastSentFeeFilter) { |
|
|
|
connman.PushMessage(pto, msgMaker.Make(NetMsgType::FEEFILTER, filterToSend)); |
|
|
|
connman.PushMessage(pto, msgMaker.Make(NetMsgType::FEEFILTER, filterToSend)); |
|
|
|
pto->lastSentFeeFilter = filterToSend; |
|
|
|
pto->lastSentFeeFilter = filterToSend; |
|
|
|