diff --git a/src/usr.sbin/ntpd/ntpd.c b/src/usr.sbin/ntpd/ntpd.c index f4955903..0a7ab12c 100644 --- a/src/usr.sbin/ntpd/ntpd.c +++ b/src/usr.sbin/ntpd/ntpd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ntpd.c,v 1.18 2004/09/18 20:01:38 henning Exp $ */ +/* $OpenBSD: ntpd.c,v 1.19 2004/09/18 20:27:57 henning Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -314,6 +314,10 @@ ntpd_settime(double d) char buf[80]; time_t tval; + /* if the offset is small, don't call settimeofday */ + if (d < SETTIME_MIN_OFFSET && d > -SETTIME_MIN_OFFSET) + return; + d_to_tv(d, &tv); if (gettimeofday(&curtime, NULL) == -1) log_warn("gettimeofday"); diff --git a/src/usr.sbin/ntpd/ntpd.h b/src/usr.sbin/ntpd/ntpd.h index 19705d8a..ac4cb360 100644 --- a/src/usr.sbin/ntpd/ntpd.h +++ b/src/usr.sbin/ntpd/ntpd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ntpd.h,v 1.38 2004/09/18 20:01:38 henning Exp $ */ +/* $OpenBSD: ntpd.h,v 1.39 2004/09/18 20:27:57 henning Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -48,6 +48,7 @@ #define QUERYTIME_MAX 15 /* single query might take n secs max */ #define OFFSET_ARRAY_SIZE 8 +#define SETTIME_MIN_OFFSET 180 /* min offset for settime at start */ enum client_state { STATE_NONE,