diff options
Diffstat (limited to 'package/openntpd/patches/patch-server_c')
-rw-r--r-- | package/openntpd/patches/patch-server_c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/package/openntpd/patches/patch-server_c b/package/openntpd/patches/patch-server_c new file mode 100644 index 000000000..ae1614afa --- /dev/null +++ b/package/openntpd/patches/patch-server_c @@ -0,0 +1,40 @@ +--- openntpd-3.9p1.orig/server.c 2006-05-14 07:29:21.000000000 +0200 ++++ openntpd-3.9p1/server.c 2010-07-02 15:33:05.061342638 +0200 +@@ -150,21 +150,33 @@ server_dispatch(int fd, struct ntpd_conf + version = (query.status & VERSIONMASK) >> 3; + + bzero(&reply, sizeof(reply)); +- if (conf->status.synced) ++ if (conf->status.synced || conf->ignore) + reply.status = conf->status.leap; + else + reply.status = LI_ALARM; ++ + reply.status |= (query.status & VERSIONMASK); + if ((query.status & MODEMASK) == MODE_CLIENT) + reply.status |= MODE_SERVER; + else + reply.status |= MODE_SYM_PAS; + +- reply.stratum = conf->status.stratum; ++ if (conf->ignore) { ++ reply.stratum = 1; ++ reply.precision = -20; ++ } else { ++ reply.stratum = conf->status.stratum; ++ reply.precision = conf->status.precision; ++ } ++ + reply.ppoll = query.ppoll; +- reply.precision = conf->status.precision; + reply.rectime = d_to_lfp(rectime); +- reply.reftime = d_to_lfp(conf->status.reftime); ++ ++ if (conf->ignore) ++ reply.reftime = d_to_lfp(gettime()); ++ else ++ reply.reftime = d_to_lfp(conf->status.reftime); ++ + reply.xmttime = d_to_lfp(gettime()); + reply.orgtime = query.xmttime; + reply.rootdelay = d_to_sfp(conf->status.rootdelay); |