refactor: net: avoid duplicate map lookups to mapLocalHost
This commit is contained in:
1 parent
0ebd88fe0b
commit
330d3aa1a2
1 file changed
+10
-12
+10
-12
@@ -190,8 +190,8 @@ CAddress GetLocalAddress(const CNetAddr *paddrPeer, ServiceFlags nLocalServices)
|
|||||||
static int GetnScore(const CService& addr)
|
static int GetnScore(const CService& addr)
|
||||||
{
|
{
|
||||||
LOCK(cs_mapLocalHost);
|
LOCK(cs_mapLocalHost);
|
||||||
if (mapLocalHost.count(addr) == 0) return 0;
|
const auto it = mapLocalHost.find(addr);
|
||||||
return mapLocalHost[addr].nScore;
|
return (it != mapLocalHost.end()) ? it->second.nScore : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is our peer's addrLocal potentially useful as an external IP source?
|
// 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);
|
LOCK(cs_mapLocalHost);
|
||||||
bool fAlready = mapLocalHost.count(addr) > 0;
|
const auto [it, is_newly_added] = mapLocalHost.emplace(addr, LocalServiceInfo());
|
||||||
LocalServiceInfo &info = mapLocalHost[addr];
|
LocalServiceInfo &info = it->second;
|
||||||
if (!fAlready || nScore >= info.nScore) {
|
if (is_newly_added || nScore >= info.nScore) {
|
||||||
info.nScore = nScore + (fAlready ? 1 : 0);
|
info.nScore = nScore + (is_newly_added ? 0 : 1);
|
||||||
info.nPort = addr.GetPort();
|
info.nPort = addr.GetPort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,12 +288,10 @@ bool IsReachable(const CNetAddr &addr)
|
|||||||
/** vote for a local address */
|
/** vote for a local address */
|
||||||
bool SeenLocal(const CService& addr)
|
bool SeenLocal(const CService& addr)
|
||||||
{
|
{
|
||||||
{
|
LOCK(cs_mapLocalHost);
|
||||||
LOCK(cs_mapLocalHost);
|
const auto it = mapLocalHost.find(addr);
|
||||||
if (mapLocalHost.count(addr) == 0)
|
if (it == mapLocalHost.end()) return false;
|
||||||
return false;
|
++it->second.nScore;
|
||||||
mapLocalHost[addr].nScore++;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user