diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2012-03-26 20:17:35 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2012-03-26 20:22:38 +0200 |
commit | 53cb1a49e744b9ebed85bb03ccd1a241cf818d74 (patch) | |
tree | ad281935559850934b14b6ea298954c619c5d6fc /src | |
parent | 01a196e08db49d83cf6c5abd8a799c56dcfef503 (diff) |
Use erase instead of rewrite to remove old addr entries
Diffstat (limited to 'src')
-rw-r--r-- | src/db.cpp | 28 | ||||
-rw-r--r-- | src/db.h | 4 |
2 files changed, 12 insertions, 20 deletions
diff --git a/src/db.cpp b/src/db.cpp index 56c59cbea7..c18860afcc 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -714,22 +714,12 @@ bool CTxDB::LoadBlockIndex() // CAddrDB // -bool CAddrDB::WriteAddress(const CAddress& addr) -{ - return Write(make_pair(string("addr"), addr.GetKey()), addr); -} - bool CAddrDB::WriteAddrman(const CAddrMan& addrman) { return Write(string("addrman"), addrman); } -bool CAddrDB::EraseAddress(const CAddress& addr) -{ - return Erase(make_pair(string("addr"), addr.GetKey())); -} - -bool CAddrDB::LoadAddresses(bool &fUpdate) +bool CAddrDB::LoadAddresses() { bool fAddrMan = false; if (Read(string("addrman"), addrman)) @@ -739,6 +729,7 @@ bool CAddrDB::LoadAddresses(bool &fUpdate) } vector<CAddress> vAddr; + vector<vector<unsigned char> > vDelete; // Get cursor Dbc* pcursor = GetCursor(); @@ -762,7 +753,11 @@ bool CAddrDB::LoadAddresses(bool &fUpdate) if (strType == "addr") { if (fAddrMan) - fUpdate = true; + { + vector<unsigned char> vchKey; + ssKey >> vchKey; + vDelete.push_back(vchKey); + } else { CAddress addr; @@ -774,6 +769,9 @@ bool CAddrDB::LoadAddresses(bool &fUpdate) } pcursor->close(); + BOOST_FOREACH(const vector<unsigned char> &vchKey, vDelete) + Erase(make_pair(string("addr"), vchKey)); + if (!fAddrMan) { addrman.Add(vAddr, CNetAddr("0.0.0.0")); @@ -785,11 +783,7 @@ bool CAddrDB::LoadAddresses(bool &fUpdate) bool LoadAddresses() { - bool fUpdate = false; - bool fRet = CAddrDB("cr+").LoadAddresses(fUpdate); - if (fUpdate) - CDB::Rewrite("addr.dat", "\004addr"); - return fRet; + return CAddrDB("cr+").LoadAddresses(); } @@ -306,10 +306,8 @@ private: CAddrDB(const CAddrDB&); void operator=(const CAddrDB&); public: - bool WriteAddress(const CAddress& addr); - bool EraseAddress(const CAddress& addr); bool WriteAddrman(const CAddrMan& addr); - bool LoadAddresses(bool &fUpdate); + bool LoadAddresses(); }; bool LoadAddresses(); |