return ts->tv_sec + (1.0e-9 * ts->tv_nsec);
}
-static double square(double d) {
- return d * d;
-}
-
static int manager_timeout(sd_event_source *source, usec_t usec, void *userdata) {
_cleanup_free_ char *pretty = NULL;
Manager *m = userdata;
j = 0;
for (i = 0; i < ELEMENTSOF(m->samples); i++)
- j += square(m->samples[i].offset - m->samples[idx_min].offset);
+ j += pow(m->samples[i].offset - m->samples[idx_min].offset, 2);
m->samples_jitter = sqrt(j / (ELEMENTSOF(m->samples) - 1));
/* ignore samples when resyncing */
return manager_connect(m);
}
- if (iov.iov_len < sizeof(struct ntp_msg)) {
+ /* Too short or too long packet? */
+ if (iov.iov_len < sizeof(struct ntp_msg) || (msghdr.msg_flags & MSG_TRUNC)) {
log_warning("Invalid response from server. Disconnecting.");
return manager_connect(m);
}