Merge #11616: Update ban-state in case of dirty-state during periodic sweep
57ac471
Call BannedListChanged outside of cs_setBanned lock (Jonas Schnelli)c853812
Update ban-state in case of dirty-state during periodic sweep (Jonas Schnelli) Pull request description: We do currently not update the UI during periodic ban list sweeps (via dump banlist). Fixes #11612 Tree-SHA512: bffbdcc03c63042177bdd511b0a9187c211c2b5011178481e8ee3e43a71eef1e4cd6b72f73672babab142b644f62f8b56f0aac1d26d3f19372b1f8644fec9395
This commit is contained in:
commit
8585bb8f05
1 changed files with 19 additions and 12 deletions
31
src/net.cpp
31
src/net.cpp
|
@ -603,21 +603,28 @@ void CConnman::SetBanned(const banmap_t &banMap)
|
|||
void CConnman::SweepBanned()
|
||||
{
|
||||
int64_t now = GetTime();
|
||||
|
||||
LOCK(cs_setBanned);
|
||||
banmap_t::iterator it = setBanned.begin();
|
||||
while(it != setBanned.end())
|
||||
bool notifyUI = false;
|
||||
{
|
||||
CSubNet subNet = (*it).first;
|
||||
CBanEntry banEntry = (*it).second;
|
||||
if(now > banEntry.nBanUntil)
|
||||
LOCK(cs_setBanned);
|
||||
banmap_t::iterator it = setBanned.begin();
|
||||
while(it != setBanned.end())
|
||||
{
|
||||
setBanned.erase(it++);
|
||||
setBannedIsDirty = true;
|
||||
LogPrint(BCLog::NET, "%s: Removed banned node ip/subnet from banlist.dat: %s\n", __func__, subNet.ToString());
|
||||
CSubNet subNet = (*it).first;
|
||||
CBanEntry banEntry = (*it).second;
|
||||
if(now > banEntry.nBanUntil)
|
||||
{
|
||||
setBanned.erase(it++);
|
||||
setBannedIsDirty = true;
|
||||
notifyUI = true;
|
||||
LogPrint(BCLog::NET, "%s: Removed banned node ip/subnet from banlist.dat: %s\n", __func__, subNet.ToString());
|
||||
}
|
||||
else
|
||||
++it;
|
||||
}
|
||||
else
|
||||
++it;
|
||||
}
|
||||
// update UI
|
||||
if(notifyUI && clientInterface) {
|
||||
clientInterface->BannedListChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue