Do not store more than 200 timedata samples.

Github-Pull: #6797
Rebased-From: 8be371db34
This commit is contained in:
Pavel Janík 2015-08-11 15:57:52 +02:00 committed by Wladimir J. van der Laan
parent f2778e0ce6
commit 91ef4d93d4
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
1 changed files with 5 additions and 1 deletions

View File

@ -40,6 +40,8 @@ static int64_t abs64(int64_t n)
return (n >= 0 ? n : -n);
}
#define BITCOIN_TIMEDATA_MAX_SAMPLES 200
void AddTimeData(const CNetAddr& ip, int64_t nTime)
{
int64_t nOffsetSample = nTime - GetTime();
@ -47,11 +49,13 @@ void AddTimeData(const CNetAddr& ip, int64_t nTime)
LOCK(cs_nTimeOffset);
// Ignore duplicates
static set<CNetAddr> setKnown;
if (setKnown.size() == BITCOIN_TIMEDATA_MAX_SAMPLES)
return;
if (!setKnown.insert(ip).second)
return;
// Add data
static CMedianFilter<int64_t> vTimeOffsets(200,0);
static CMedianFilter<int64_t> vTimeOffsets(BITCOIN_TIMEDATA_MAX_SAMPLES, 0);
vTimeOffsets.input(nOffsetSample);
LogPrintf("Added time data, samples %d, offset %+d (%+d minutes)\n", vTimeOffsets.size(), nOffsetSample, nOffsetSample/60);