diff --git a/src/usr.sbin/ntpd/ntp.c b/src/usr.sbin/ntpd/ntp.c index 8ee2a981..72b0aaae 100644 --- a/src/usr.sbin/ntpd/ntp.c +++ b/src/usr.sbin/ntpd/ntp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ntp.c,v 1.84 2006/06/07 06:29:03 otto Exp $ */ +/* $OpenBSD: ntp.c,v 1.85 2006/06/08 06:03:07 otto Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -467,24 +467,20 @@ priv_adjtime(void) qsort(offsets, offset_cnt, sizeof(struct ntp_offset *), offset_compare); - if (offset_cnt > 1 && offset_cnt % 2 == 0) { + i = offset_cnt / 2; + if (offset_cnt % 2 == 0) { offset_median = - (offsets[offset_cnt / 2 - 1]->offset + - offsets[offset_cnt / 2]->offset) / 2; + (offsets[i - 1]->offset + offsets[i]->offset) / 2; conf->status.rootdelay = - (offsets[offset_cnt / 2 - 1]->delay + - offsets[offset_cnt / 2]->delay) / 2; + (offsets[i - 1]->delay + offsets[i]->delay) / 2; conf->status.stratum = MAX( - offsets[offset_cnt / 2 - 1]->status.stratum, - offsets[offset_cnt / 2]->status.stratum); + offsets[i - 1]->status.stratum, offsets[i]->status.stratum); } else { - offset_median = offsets[offset_cnt / 2]->offset; - conf->status.rootdelay = - offsets[offset_cnt / 2]->delay; - conf->status.stratum = - offsets[offset_cnt / 2]->status.stratum; + offset_median = offsets[i]->offset; + conf->status.rootdelay = offsets[i]->delay; + conf->status.stratum = offsets[i]->status.stratum; } - conf->status.leap = offsets[offset_cnt / 2]->status.leap; + conf->status.leap = offsets[i]->status.leap; imsg_compose(ibuf_main, IMSG_ADJTIME, 0, 0, &offset_median, sizeof(offset_median)); @@ -493,10 +489,8 @@ priv_adjtime(void) conf->status.stratum++; /* one more than selected peer */ update_scale(offset_median); - conf->status.refid4 = - offsets[offset_cnt / 2]->status.refid4; - conf->status.refid = - offsets[offset_cnt / 2]->status.send_refid; + conf->status.refid4 = offsets[i]->status.refid4; + conf->status.refid = offsets[i]->status.send_refid; free(offsets);