[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: ntpd -q retry timeout
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2010-08-27 0:09:38
Message-ID: 201008270209.38126.vda.linux () googlemail ! com
[Download RAW message or body]
On Wednesday 25 August 2010 23:05, Rob Landley wrote:
> A note on the advisability of using ntpd's -q option from /dev/console, a
> context in which ctrl-c doesn't work:
>
> # ntpd -nq -p north-america.pool.ntp.org
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
> ntpd: send failed: Network is unreachable
>
> This was the point at which I came back and rebooted the machine.
This is how upstream ntpd works too.
But OTOH, upstream is not fully sane...
Please try attached patch. +16 bytes.
--
vda
["4.patch" (text/x-diff)]
diff -ad -urpN busybox.3/networking/ntpd.c busybox.4/networking/ntpd.c
--- busybox.3/networking/ntpd.c 2010-08-23 03:05:35.000000000 +0200
+++ busybox.4/networking/ntpd.c 2010-08-27 02:02:38.000000000 +0200
@@ -1920,9 +1920,28 @@ static NOINLINE void ntp_init(char **arg
if (opts & OPT_N)
setpriority(PRIO_PROCESS, 0, -15);
- bb_signals((1 << SIGTERM) | (1 << SIGINT), record_signo);
- /* Removed SIGHUP here: */
- bb_signals((1 << SIGPIPE) | (1 << SIGCHLD), SIG_IGN);
+ /* If network is up, syncronization occurs in ~10 seconds.
+ * We give "ntpd -q" a full minute to finish, then we exit.
+ *
+ * I tested ntpd 4.2.6p1 and apparently it never exits
+ * (will try forever), but it does not feel right.
+ * The goal of -q is to act like ntpdate: set time
+ * after a reasonably small period of polling, or fail.
+ */
+ if (opts & OPT_q)
+ alarm(60);
+
+ bb_signals(0
+ | (1 << SIGTERM)
+ | (1 << SIGINT)
+ | (1 << SIGALRM)
+ , record_signo
+ );
+ bb_signals(0
+ | (1 << SIGPIPE)
+ | (1 << SIGCHLD)
+ , SIG_IGN
+ );
}
int ntpd_main(int argc UNUSED_PARAM, char **argv) MAIN_EXTERNALLY_VISIBLE;
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic