Skip to content

Commit 57ac471

Browse files
committed
Call BannedListChanged outside of cs_setBanned lock
1 parent c853812 commit 57ac471

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/net.cpp

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -596,25 +596,27 @@ void CConnman::SetBanned(const banmap_t &banMap)
596596
void CConnman::SweepBanned()
597597
{
598598
int64_t now = GetTime();
599-
600-
LOCK(cs_setBanned);
601-
banmap_t::iterator it = setBanned.begin();
602-
while(it != setBanned.end())
599+
bool notifyUI = false;
603600
{
604-
CSubNet subNet = (*it).first;
605-
CBanEntry banEntry = (*it).second;
606-
if(now > banEntry.nBanUntil)
601+
LOCK(cs_setBanned);
602+
banmap_t::iterator it = setBanned.begin();
603+
while(it != setBanned.end())
607604
{
608-
setBanned.erase(it++);
609-
setBannedIsDirty = true;
610-
LogPrint(BCLog::NET, "%s: Removed banned node ip/subnet from banlist.dat: %s\n", __func__, subNet.ToString());
605+
CSubNet subNet = (*it).first;
606+
CBanEntry banEntry = (*it).second;
607+
if(now > banEntry.nBanUntil)
608+
{
609+
setBanned.erase(it++);
610+
setBannedIsDirty = true;
611+
notifyUI = true;
612+
LogPrint(BCLog::NET, "%s: Removed banned node ip/subnet from banlist.dat: %s\n", __func__, subNet.ToString());
613+
}
614+
else
615+
++it;
611616
}
612-
else
613-
++it;
614617
}
615-
616618
// update UI
617-
if(setBannedIsDirty && clientInterface) {
619+
if(notifyUI && clientInterface) {
618620
clientInterface->BannedListChanged();
619621
}
620622
}

0 commit comments

Comments
 (0)