Skip to content

Commit fa525e4

Browse files
author
MarcoFalke
committed
net: Avoid wasting inv traffic during IBD
1 parent fa06d7e commit fa525e4

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/net_processing.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4392,10 +4392,21 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
43924392
!pto->HasPermission(PF_FORCERELAY)) {
43934393
CAmount currentFilter = m_mempool.GetMinFee(gArgs.GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000).GetFeePerK();
43944394
int64_t timeNow = GetTimeMicros();
4395+
static FeeFilterRounder g_filter_rounder{CFeeRate{DEFAULT_MIN_RELAY_TX_FEE}};
4396+
if (m_chainman.ActiveChainstate().IsInitialBlockDownload()) {
4397+
// Received tx-inv messages are discarded when the active
4398+
// chainstate is in IBD, so tell the peer to not send them.
4399+
currentFilter = MAX_MONEY;
4400+
} else {
4401+
static const CAmount MAX_FILTER{g_filter_rounder.round(MAX_MONEY)};
4402+
if (pto->m_tx_relay->lastSentFeeFilter == MAX_FILTER) {
4403+
// Send the current filter if we sent MAX_FILTER previously
4404+
// and made it out of IBD.
4405+
pto->m_tx_relay->nextSendTimeFeeFilter = timeNow - 1;
4406+
}
4407+
}
43954408
if (timeNow > pto->m_tx_relay->nextSendTimeFeeFilter) {
4396-
static CFeeRate default_feerate(DEFAULT_MIN_RELAY_TX_FEE);
4397-
static FeeFilterRounder filterRounder(default_feerate);
4398-
CAmount filterToSend = filterRounder.round(currentFilter);
4409+
CAmount filterToSend = g_filter_rounder.round(currentFilter);
43994410
// We always have a fee filter of at least minRelayTxFee
44004411
filterToSend = std::max(filterToSend, ::minRelayTxFee.GetFeePerK());
44014412
if (filterToSend != pto->m_tx_relay->lastSentFeeFilter) {

test/functional/rpc_net.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ class NetTest(BitcoinTestFramework):
4646
def set_test_params(self):
4747
self.setup_clean_chain = True
4848
self.num_nodes = 2
49-
self.extra_args = [["-minrelaytxfee=0.00001000"],["-minrelaytxfee=0.00000500"]]
49+
self.extra_args = [["-minrelaytxfee=0.00001000"], ["-minrelaytxfee=0.00000500"]]
5050
self.supports_cli = False
5151

5252
def run_test(self):
53+
self.log.info('Get out of IBD for the minfeefilter test')
54+
self.nodes[0].generate(1)
5355
self.log.info('Connect nodes both way')
5456
connect_nodes(self.nodes[0], 1)
5557
connect_nodes(self.nodes[1], 0)

0 commit comments

Comments
 (0)