migrate code to monotonic timers (as appropriate)
Some parts of code use gettimeofday()
to get real time and compute differences between consecutive calls.
This approach is causing problems when real time changes e.g. as a result of adminisrator's action.
Code which works with time differences should use monotonic timers, please see man gettimeofday
, clock_gettime
, and docs in libuv - libuv has its own monotonic timer.
There is some code which needs real time (DNSSEC signature verification, potentially logging etc.) so this needs to stay.
Beware, there are potential gotchas with monotonic clock when the value is transferred between processes or system reboots. Please make sure the monotonic values which get stored somewhere (e.g. in case) will make sense across processes and reboots (or find a way to make them sensical).