mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 10:43:19 -03:00
refactor: net: avoid duplicate map lookups to mapLocalHost
This commit is contained in:
parent
0ebd88fe0b
commit
330d3aa1a2
1 changed files with 10 additions and 12 deletions
22
src/net.cpp
22
src/net.cpp
|
@ -190,8 +190,8 @@ CAddress GetLocalAddress(const CNetAddr *paddrPeer, ServiceFlags nLocalServices)
|
|||
static int GetnScore(const CService& addr)
|
||||
{
|
||||
LOCK(cs_mapLocalHost);
|
||||
if (mapLocalHost.count(addr) == 0) return 0;
|
||||
return mapLocalHost[addr].nScore;
|
||||
const auto it = mapLocalHost.find(addr);
|
||||
return (it != mapLocalHost.end()) ? it->second.nScore : 0;
|
||||
}
|
||||
|
||||
// Is our peer's addrLocal potentially useful as an external IP source?
|
||||
|
@ -243,10 +243,10 @@ bool AddLocal(const CService& addr, int nScore)
|
|||
|
||||
{
|
||||
LOCK(cs_mapLocalHost);
|
||||
bool fAlready = mapLocalHost.count(addr) > 0;
|
||||
LocalServiceInfo &info = mapLocalHost[addr];
|
||||
if (!fAlready || nScore >= info.nScore) {
|
||||
info.nScore = nScore + (fAlready ? 1 : 0);
|
||||
const auto [it, is_newly_added] = mapLocalHost.emplace(addr, LocalServiceInfo());
|
||||
LocalServiceInfo &info = it->second;
|
||||
if (is_newly_added || nScore >= info.nScore) {
|
||||
info.nScore = nScore + (is_newly_added ? 0 : 1);
|
||||
info.nPort = addr.GetPort();
|
||||
}
|
||||
}
|
||||
|
@ -288,12 +288,10 @@ bool IsReachable(const CNetAddr &addr)
|
|||
/** vote for a local address */
|
||||
bool SeenLocal(const CService& addr)
|
||||
{
|
||||
{
|
||||
LOCK(cs_mapLocalHost);
|
||||
if (mapLocalHost.count(addr) == 0)
|
||||
return false;
|
||||
mapLocalHost[addr].nScore++;
|
||||
}
|
||||
LOCK(cs_mapLocalHost);
|
||||
const auto it = mapLocalHost.find(addr);
|
||||
if (it == mapLocalHost.end()) return false;
|
||||
++it->second.nScore;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue