X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftimesync%2Ftimesyncd-manager.c;h=d3c62c9023c6bb56ebfa0a3b742a62d77f29064c;hb=7b5b3fc3ac34c3895e1ceb02f6a224b09a80427f;hp=ef5854d07ebaa3dcc9af20cf2652ad07d2f4ae6d;hpb=f89c4e15c966cd3af22bd71bd5adba9a0a8e7404;p=elogind.git diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index ef5854d07..d3c62c902 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -147,10 +147,6 @@ static double ts_to_d(const struct timespec *ts) { 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; @@ -428,7 +424,7 @@ static bool manager_sample_spike_detection(Manager *m, double offset, double del 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 */ @@ -529,7 +525,8 @@ static int manager_receive_response(sd_event_source *source, int fd, uint32_t re 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); } @@ -679,9 +676,9 @@ static int manager_receive_response(sd_event_source *source, int fd, uint32_t re log_error_errno(errno, "Failed to call clock_adjtime(): %m"); } - log_info("interval/delta/delay/jitter/drift " USEC_FMT "s/%+.3fs/%.3fs/%.3fs/%+ippm%s", - m->poll_interval_usec / USEC_PER_SEC, offset, delay, m->samples_jitter, m->drift_ppm, - spike ? " (ignored)" : ""); + log_debug("interval/delta/delay/jitter/drift " USEC_FMT "s/%+.3fs/%.3fs/%.3fs/%+ippm%s", + m->poll_interval_usec / USEC_PER_SEC, offset, delay, m->samples_jitter, m->drift_ppm, + spike ? " (ignored)" : ""); r = manager_arm_timer(m, m->poll_interval_usec); if (r < 0)