← Commit list

8e23fafad

Denys Vlasenko
Denys Vlasenko
2011-04-07
FAILED Duration: 307s

Subject

ntpd: decrease ntpd -q "no response" timeout to 10 sec

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

networking/ntpd.c+17 -3
@@ -238,6 +238,8 @@ enum {
OPT_p = (1 << 5),
OPT_S = (1 << 6),
OPT_l = (1 << 7) * ENABLE_FEATURE_NTPD_SERVER,
+ /* We hijack some bits for other purposes */
+ OPT_qq = (1 << 8),
};
struct globals {
@@ -1930,15 +1932,18 @@ static NOINLINE void ntp_init(char **argv)
setpriority(PRIO_PROCESS, 0, -15);
/* If network is up, syncronization occurs in ~10 seconds.
- * We give "ntpd -q" a full minute to finish, then we exit.
+ * We give "ntpd -q" 10 seconds to get first reply,
+ * then another 50 seconds to finish syncing.
*
* 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);
+ if (opts & OPT_q) {
+ option_mask32 |= OPT_qq;
+ alarm(10);
+ }
bb_signals(0
| (1 << SIGTERM)
@@ -2065,6 +2070,15 @@ int ntpd_main(int argc UNUSED_PARAM, char **argv)
#endif
for (; nfds != 0 && j < i; j++) {
if (pfd[j].revents /* & (POLLIN|POLLERR)*/) {
+ /*
+ * At init, alarm was set to 10 sec.
+ * Now we did get a reply.
+ * Increase timeout to 50 seconds to finish syncing.
+ */
+ if (option_mask32 & OPT_qq) {
+ option_mask32 &= ~OPT_qq;
+ alarm(50);
+ }
nfds--;
recv_and_process_peer_pkt(idx2peer[j]);
gettime1900d(); /* sets G.cur_time */