diff options
| author | Gavin Andresen <[email protected]> | 2012-03-29 13:34:07 -0400 |
|---|---|---|
| committer | Gavin Andresen <[email protected]> | 2012-03-29 13:34:07 -0400 |
| commit | 6293a9f87f8883fecb18042681407d1de6c20485 (patch) | |
| tree | 7f83267abe52c5b3f50ebc3cfc61c11c0da37c45 /src/db.cpp | |
| parent | Merge pull request #1007 from gavinandresen/log_auto_remove (diff) | |
| download | discoin-6293a9f87f8883fecb18042681407d1de6c20485.tar.xz discoin-6293a9f87f8883fecb18042681407d1de6c20485.zip | |
Workaround hangs when upgrading old addr.dat files
Diffstat (limited to 'src/db.cpp')
| -rw-r--r-- | src/db.cpp | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/src/db.cpp b/src/db.cpp index 2dc86e79f..79c4e4778 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -722,12 +722,13 @@ bool CAddrDB::WriteAddrman(const CAddrMan& addrman) bool CAddrDB::LoadAddresses() { - bool fAddrMan = false; if (Read(string("addrman"), addrman)) { printf("Loaded %i addresses\n", addrman.size()); - fAddrMan = true; + return true; } + + // Read pre-0.6 addr records vector<CAddress> vAddr; vector<vector<unsigned char> > vDelete; @@ -753,31 +754,19 @@ bool CAddrDB::LoadAddresses() ssKey >> strType; if (strType == "addr") { - if (fAddrMan) - { - vector<unsigned char> vchKey; - ssKey >> vchKey; - vDelete.push_back(vchKey); - } - else - { - CAddress addr; - ssValue >> addr; - vAddr.push_back(addr); - } - + CAddress addr; + ssValue >> addr; + vAddr.push_back(addr); } } pcursor->close(); - BOOST_FOREACH(const vector<unsigned char> &vchKey, vDelete) - Erase(make_pair(string("addr"), vchKey)); + addrman.Add(vAddr, CNetAddr("0.0.0.0")); + printf("Loaded %i addresses\n", addrman.size()); - if (!fAddrMan) - { - addrman.Add(vAddr, CNetAddr("0.0.0.0")); - printf("Loaded %i addresses\n", addrman.size()); - } + // Note: old records left; we ran into hangs-on-startup + // bugs for some users who (we think) were running after + // an unclean shutdown. return true; } |