better IsInitialBlockDownload
author--author=Satoshi Nakamoto <satoshin@gmx.com>
Tue, 27 Jul 2010 20:46:41 +0000 (20:46 +0000)
committerGavin Andresen <gavinandresen@gmail.com>
Tue, 27 Jul 2010 20:46:41 +0000 (20:46 +0000)
main.cpp

index 15a182d..2967653 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -850,22 +850,19 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast)
     return bnNew.GetCompact();
 }
 
-vector<int> vStartingHeight;
-void AddStartingHeight(int nStartingHeight)
+bool IsInitialBlockDownload()
 {
-    if (nStartingHeight != -1)
+    if (pindexBest == NULL)
+        return true;
+    static int64 nLastUpdate;
+    static CBlockIndex* pindexLastBest;
+    if (pindexBest != pindexLastBest)
     {
-        vStartingHeight.push_back(nStartingHeight);
-        sort(vStartingHeight.begin(), vStartingHeight.end());
+        pindexLastBest = pindexBest;
+        nLastUpdate = GetTime();
     }
-}
-
-bool IsInitialBlockDownload()
-{
-    int nMedian = 69000;
-    if (vStartingHeight.size() >= 5)
-        nMedian = vStartingHeight[vStartingHeight.size()/2];
-    return nBestHeight < nMedian-1000;
+    return (GetTime() - nLastUpdate < 10 &&
+            pindexBest->nTime < GetTime() - 24 * 60 * 60);
 }
 
 
@@ -1923,7 +1920,6 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
         }
 
         AddTimeData(pfrom->addr.ip, nTime);
-        AddStartingHeight(pfrom->nStartingHeight);
 
         // Change version
         if (pfrom->nVersion >= 209)