banlist (bugfix): allow CNode::SweepBanned() to run on interval

- allows CNode::SweepBanned() to run, even if !CNode::BannedSetIsDirty(),
  because if nBanUntil is over we want the ban to be disabled for these
  nodes
This commit is contained in:
Philip Kaufmann 2015-07-03 10:46:08 +02:00
parent 2977c243ef
commit e8600c924d

View file

@ -1455,9 +1455,7 @@ void DumpAddresses()
void DumpData()
{
DumpAddresses();
if (CNode::BannedSetIsDirty())
DumpBanlist();
DumpBanlist();
}
void static ProcessOneShot()
@ -2474,22 +2472,26 @@ bool CBanDB::Read(banmap_t& banSet)
// ... verify the network matches ours
if (memcmp(pchMsgTmp, Params().MessageStart(), sizeof(pchMsgTmp)))
return error("%s: Invalid network magic number", __func__);
// de-serialize address data into one CAddrMan object
ssBanlist >> banSet;
}
catch (const std::exception& e) {
return error("%s: Deserialize or I/O error - %s", __func__, e.what());
}
return true;
}
void DumpBanlist()
{
int64_t nStart = GetTimeMillis();
CNode::SweepBanned(); // clean unused entries (if bantime has expired)
if (!CNode::BannedSetIsDirty())
return;
int64_t nStart = GetTimeMillis();
CBanDB bandb;
banmap_t banmap;
CNode::GetBanned(banmap);