summaryrefslogtreecommitdiff
path: root/package/openntpd/patches/patch-server_c
diff options
context:
space:
mode:
Diffstat (limited to 'package/openntpd/patches/patch-server_c')
-rw-r--r--package/openntpd/patches/patch-server_c40
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);