Browse Source

0.9.34 quick fix to "Assertion mapInfo.count" failed, don't mess with these addrman structures!

miguelfreitas v0.9.34
Miguel Freitas 9 years ago
parent
commit
4a8518f596
  1. 27
      src/addrman.cpp
  2. 2
      src/clientversion.h

27
src/addrman.cpp

@ -319,26 +319,6 @@ bool CAddrMan::Add_(const CAddress &addr, const CNetAddr& source, int64 nTimePen
int nId; int nId;
CAddrInfo *pinfo = Find(addr, &nId); CAddrInfo *pinfo = Find(addr, &nId);
// port changed to random with twisterd >= 0.9.30
// we must replace old port info with the newer one
if( pinfo && pinfo->GetPort() != addr.GetPort() &&
pinfo->GetPort() == Params().GetDefaultPort() ) {
// remove the entry from all new buckets
for (std::vector<std::set<int> >::iterator it = vvNew.begin(); it != vvNew.end(); it++)
{
if ((*it).erase(nId))
pinfo->nRefCount--;
}
if (pinfo->nRefCount == 0)
{
SwapRandom(pinfo->nRandomPos, vRandom.size()-1);
vRandom.pop_back();
mapAddr.erase(*pinfo);
mapInfo.erase(nId);
pinfo = NULL;
}
}
if (pinfo) if (pinfo)
{ {
// periodically update nTime // periodically update nTime
@ -350,6 +330,13 @@ bool CAddrMan::Add_(const CAddress &addr, const CNetAddr& source, int64 nTimePen
// add services // add services
pinfo->nServices |= addr.nServices; pinfo->nServices |= addr.nServices;
// port changed to random with twisterd >= 0.9.30
// we must replace old port info with the newer one
if( pinfo->GetPort() != addr.GetPort() &&
pinfo->GetPort() == Params().GetDefaultPort() ) {
pinfo->SetPort( addr.GetPort() );
}
// do not update if no new information is present // do not update if no new information is present
if (!addr.nTime || (pinfo->nTime && addr.nTime <= pinfo->nTime)) if (!addr.nTime || (pinfo->nTime && addr.nTime <= pinfo->nTime))
return false; return false;

2
src/clientversion.h

@ -8,7 +8,7 @@
// These need to be macros, as version.cpp's and bitcoin-qt.rc's voodoo requires it // These need to be macros, as version.cpp's and bitcoin-qt.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 0 #define CLIENT_VERSION_MAJOR 0
#define CLIENT_VERSION_MINOR 9 #define CLIENT_VERSION_MINOR 9
#define CLIENT_VERSION_REVISION 33 #define CLIENT_VERSION_REVISION 34
#define CLIENT_VERSION_BUILD 0 #define CLIENT_VERSION_BUILD 0
// Set to true for release, false for prerelease or test build // Set to true for release, false for prerelease or test build

Loading…
Cancel
Save