Skip to content

Commit

Permalink
net: Clarify that m_addr_local is only set once
Browse files Browse the repository at this point in the history
Includes a rename from addrLocal to m_addr_local to match the name of
its corresponding Mutex.
  • Loading branch information
MarcoFalke committed Aug 9, 2024
1 parent bacab13 commit fa6fe43
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 13 deletions.
8 changes: 3 additions & 5 deletions src/net.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -576,16 +576,14 @@ CService CNode::GetAddrLocal() const
{
AssertLockNotHeld(m_addr_local_mutex);
LOCK(m_addr_local_mutex);
return addrLocal;
return m_addr_local;
}

void CNode::SetAddrLocal(const CService& addrLocalIn) {
AssertLockNotHeld(m_addr_local_mutex);
LOCK(m_addr_local_mutex);
if (addrLocal.IsValid()) {
LogError("Addr local already set for node: %i. Refusing to change from %s to %s\n", id, addrLocal.ToStringAddrPort(), addrLocalIn.ToStringAddrPort());
} else {
addrLocal = addrLocalIn;
if (Assume(!m_addr_local.IsValid())) { // Addr local can only be set once during version msg processing
m_addr_local = addrLocalIn;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/net.h
Original file line number Diff line number Diff line change
Expand Up @@ -963,7 +963,7 @@ class CNode
size_t m_msg_process_queue_size GUARDED_BY(m_msg_process_queue_mutex){0};

// Our address, as reported by the peer
CService addrLocal GUARDED_BY(m_addr_local_mutex);
CService m_addr_local GUARDED_BY(m_addr_local_mutex);
mutable Mutex m_addr_local_mutex;

mapMsgTypeSize mapSendBytesPerMsgType GUARDED_BY(cs_vSend);
Expand Down
12 changes: 5 additions & 7 deletions src/test/fuzz/net.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ FUZZ_TARGET(net, .init = initialize_net)
SetMockTime(ConsumeTime(fuzzed_data_provider));
CNode node{ConsumeNode(fuzzed_data_provider)};
node.SetCommonVersion(fuzzed_data_provider.ConsumeIntegral<int>());
if (const auto service_opt =
ConsumeDeserializable<CService>(fuzzed_data_provider, ConsumeDeserializationParams<CNetAddr::SerParams>(fuzzed_data_provider)))
{
node.SetAddrLocal(*service_opt);
}
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
CallOneOf(
fuzzed_data_provider,
Expand All @@ -52,13 +57,6 @@ FUZZ_TARGET(net, .init = initialize_net)
node.Release();
}
},
[&] {
const std::optional<CService> service_opt = ConsumeDeserializable<CService>(fuzzed_data_provider, ConsumeDeserializationParams<CNetAddr::SerParams>(fuzzed_data_provider));
if (!service_opt) {
return;
}
node.SetAddrLocal(*service_opt);
},
[&] {
const std::vector<uint8_t> b = ConsumeRandomLengthByteVector(fuzzed_data_provider);
bool complete;
Expand Down

0 comments on commit fa6fe43

Please sign in to comment.