ntp: use monotonic time for replacement interval
Avoid errors in the measured interval due to clock steps.
This commit is contained in:
parent
05809e937c
commit
ab8da7ecb9
1 changed files with 5 additions and 6 deletions
|
@ -1006,11 +1006,10 @@ resolve_source_replacement(SourceRecord *record, int refreshment)
|
|||
void
|
||||
NSR_HandleBadSource(IPAddr *address)
|
||||
{
|
||||
static struct timespec last_replacement;
|
||||
struct timespec now;
|
||||
static double last_replacement = -1e6;
|
||||
SourceRecord *record;
|
||||
IPAddr ip_addr;
|
||||
double diff;
|
||||
double now;
|
||||
int slot;
|
||||
|
||||
if (!find_slot(address, &slot))
|
||||
|
@ -1025,9 +1024,9 @@ NSR_HandleBadSource(IPAddr *address)
|
|||
return;
|
||||
|
||||
/* Don't resolve names too frequently */
|
||||
SCH_GetLastEventTime(NULL, NULL, &now);
|
||||
diff = UTI_DiffTimespecsToDouble(&now, &last_replacement);
|
||||
if (fabs(diff) < RESOLVE_INTERVAL_UNIT * (1 << MIN_REPLACEMENT_INTERVAL)) {
|
||||
now = SCH_GetLastEventMonoTime();
|
||||
if (now - last_replacement <
|
||||
RESOLVE_INTERVAL_UNIT * (1 << MIN_REPLACEMENT_INTERVAL)) {
|
||||
DEBUG_LOG("replacement postponed");
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue