Skip to content

Commit 8585bb8

Browse files
committed
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
2 parents c66adb2 + 57ac471 commit 8585bb8

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/net.cpp

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -603,21 +603,28 @@ void CConnman::SetBanned(const banmap_t &banMap)
603603
void CConnman::SweepBanned()
604604
{
605605
int64_t now = GetTime();
606-
607-
LOCK(cs_setBanned);
608-
banmap_t::iterator it = setBanned.begin();
609-
while(it != setBanned.end())
606+
bool notifyUI = false;
610607
{
611-
CSubNet subNet = (*it).first;
612-
CBanEntry banEntry = (*it).second;
613-
if(now > banEntry.nBanUntil)
608+
LOCK(cs_setBanned);
609+
banmap_t::iterator it = setBanned.begin();
610+
while(it != setBanned.end())
614611
{
615-
setBanned.erase(it++);
616-
setBannedIsDirty = true;
617-
LogPrint(BCLog::NET, "%s: Removed banned node ip/subnet from banlist.dat: %s\n", __func__, subNet.ToString());
612+
CSubNet subNet = (*it).first;
613+
CBanEntry banEntry = (*it).second;
614+
if(now > banEntry.nBanUntil)
615+
{
616+
setBanned.erase(it++);
617+
setBannedIsDirty = true;
618+
notifyUI = true;
619+
LogPrint(BCLog::NET, "%s: Removed banned node ip/subnet from banlist.dat: %s\n", __func__, subNet.ToString());
620+
}
621+
else
622+
++it;
618623
}
619-
else
620-
++it;
624+
}
625+
// update UI
626+
if(notifyUI && clientInterface) {
627+
clientInterface->BannedListChanged();
621628
}
622629
}
623630

0 commit comments

Comments
 (0)