banlist: update set dirty to be more fine grained

- move the SetBannedSetDirty(false) call from DumpData() into DumpBanlist()
- ensure we only set false, if the write succeeded
This commit is contained in:
Philip Kaufmann 2015-07-03 09:26:51 +02:00
parent 5ab5dca6f1
commit 57c77fe4d3

View file

@ -1455,10 +1455,7 @@ void DumpData()
DumpAddresses();
if (CNode::BannedSetIsDirty())
{
DumpBanlist();
CNode::SetBannedSetDirty(false);
}
}
void static ProcessOneShot()
@ -2484,14 +2481,14 @@ bool CBanDB::Read(banmap_t& banSet)
void DumpBanlist()
{
int64_t nStart = GetTimeMillis();
CNode::SweepBanned(); //clean unused entries (if bantime has expired)
CNode::SweepBanned(); // clean unused entries (if bantime has expired)
CBanDB bandb;
banmap_t banmap;
CNode::GetBanned(banmap);
bandb.Write(banmap);
if (bandb.Write(banmap))
CNode::SetBannedSetDirty(false);
LogPrint("net", "Flushed %d banned node ips/subnets to banlist.dat %dms\n",
banmap.size(), GetTimeMillis() - nStart);
banmap.size(), GetTimeMillis() - nStart);
}