Skip to content

Commit c89799d

Browse files
committed
merge bitcoin#24692: Follow-ups to bitcoin#21160
1 parent 33098ae commit c89799d

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

src/net_processing.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ class PeerManagerImpl final : public PeerManager
464464
void SendBlockTransactions(CNode& pfrom, const CBlock& block, const BlockTransactionsRequest& req);
465465

466466
/** Send a version message to a peer */
467-
void PushNodeVersion(CNode& pnode, Peer& peer);
467+
void PushNodeVersion(CNode& pnode, const Peer& peer);
468468

469469
/** Send a ping message every PING_INTERVAL or if requested via RPC. May
470470
* mark the peer to be disconnected if a ping has timed out.
@@ -1215,7 +1215,7 @@ void PeerManagerImpl::FindNextBlocksToDownload(NodeId nodeid, unsigned int count
12151215
}
12161216
} // namespace
12171217

1218-
void PeerManagerImpl::PushNodeVersion(CNode& pnode, Peer& peer)
1218+
void PeerManagerImpl::PushNodeVersion(CNode& pnode, const Peer& peer)
12191219
{
12201220
const auto& params = Params();
12211221

@@ -3369,8 +3369,10 @@ void PeerManagerImpl::ProcessMessage(
33693369
pfrom.m_limited_node = (!(nServices & NODE_NETWORK) && (nServices & NODE_NETWORK_LIMITED));
33703370

33713371
if (!pfrom.IsBlockOnlyConn()) {
3372-
LOCK(peer->m_tx_relay->m_bloom_filter_mutex);
3373-
peer->m_tx_relay->m_relay_txs = fRelay; // set to true after we get the first filter* message
3372+
{
3373+
LOCK(peer->m_tx_relay->m_bloom_filter_mutex);
3374+
peer->m_tx_relay->m_relay_txs = fRelay; // set to true after we get the first filter* message
3375+
}
33743376
if (fRelay) pfrom.m_relays_txs = true;
33753377
}
33763378

@@ -4687,10 +4689,12 @@ void PeerManagerImpl::ProcessMessage(
46874689
}
46884690
else if (!pfrom.IsBlockOnlyConn())
46894691
{
4690-
LOCK(peer->m_tx_relay->m_bloom_filter_mutex);
4691-
peer->m_tx_relay->m_bloom_filter.reset(new CBloomFilter(filter));
4692+
{
4693+
LOCK(peer->m_tx_relay->m_bloom_filter_mutex);
4694+
peer->m_tx_relay->m_bloom_filter.reset(new CBloomFilter(filter));
4695+
peer->m_tx_relay->m_relay_txs = true;
4696+
}
46924697
pfrom.m_bloom_filter_loaded = true;
4693-
peer->m_tx_relay->m_relay_txs = true;
46944698
pfrom.m_relays_txs = true;
46954699
}
46964700
return;
@@ -4733,10 +4737,13 @@ void PeerManagerImpl::ProcessMessage(
47334737
if (pfrom.IsBlockOnlyConn()) {
47344738
return;
47354739
}
4736-
LOCK(peer->m_tx_relay->m_bloom_filter_mutex);
4737-
peer->m_tx_relay->m_bloom_filter = nullptr;
4740+
4741+
{
4742+
LOCK(peer->m_tx_relay->m_bloom_filter_mutex);
4743+
peer->m_tx_relay->m_bloom_filter = nullptr;
4744+
peer->m_tx_relay->m_relay_txs = true;
4745+
}
47384746
pfrom.m_bloom_filter_loaded = false;
4739-
peer->m_tx_relay->m_relay_txs = true;
47404747
pfrom.m_relays_txs = true;
47414748
return;
47424749
}

src/test/fuzz/util.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ void FillNode(FuzzedDataProvider& fuzzed_data_provider, ConnmanTestMsg& connman,
206206
const ServiceFlags remote_services = ConsumeWeakEnum(fuzzed_data_provider, ALL_SERVICE_FLAGS);
207207
const NetPermissionFlags permission_flags = ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS);
208208
const int32_t version = fuzzed_data_provider.ConsumeIntegralInRange<int32_t>(MIN_PEER_PROTO_VERSION, std::numeric_limits<int32_t>::max());
209-
const bool filter_txs = fuzzed_data_provider.ConsumeBool();
209+
const bool relay_txs{fuzzed_data_provider.ConsumeBool()};
210210

211211
const CNetMsgMaker mm{0};
212212

@@ -222,7 +222,7 @@ void FillNode(FuzzedDataProvider& fuzzed_data_provider, ConnmanTestMsg& connman,
222222
uint64_t{1}, // dummy nonce
223223
std::string{}, // dummy subver
224224
int32_t{}, // dummy starting_height
225-
filter_txs),
225+
relay_txs),
226226
};
227227

228228
(void)connman.ReceiveMsgFrom(node, msg_version);
@@ -236,6 +236,9 @@ void FillNode(FuzzedDataProvider& fuzzed_data_provider, ConnmanTestMsg& connman,
236236
assert(node.nVersion == version);
237237
assert(node.GetCommonVersion() == std::min(version, PROTOCOL_VERSION));
238238
assert(node.nServices == remote_services);
239+
CNodeStateStats statestats;
240+
assert(peerman.GetNodeStateStats(node.GetId(), statestats));
241+
assert(statestats.m_relay_txs == (relay_txs && !node.IsBlockOnlyConn()));
239242
node.m_permissionFlags = permission_flags;
240243
if (successfully_connected) {
241244
CSerializedNetMsg msg_verack{mm.Make(NetMsgType::VERACK)};

0 commit comments

Comments
 (0)