diff options
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/rdate.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/util-linux/rdate.c b/util-linux/rdate.c index a5699eb..cb18024 100644 --- a/util-linux/rdate.c +++ b/util-linux/rdate.c @@ -32,11 +32,17 @@ #include <time.h> #include <stdlib.h> #include <unistd.h> +#include <signal.h> #include "busybox.h" static const int RFC_868_BIAS = 2208988800UL; +static void socket_timeout() +{ + bb_error_msg_and_die("timeout connecting to time server\n"); +} + static time_t askremotedate(const char *host) { unsigned long int nett, localt; @@ -46,6 +52,10 @@ static time_t askremotedate(const char *host) if (getservbyname("time", "tcp") != NULL) port="time"; + /* Add a timeout for dead or non accessable servers */ + alarm(10); + signal(SIGALRM, socket_timeout); + fd = xconnect(host, port); if (safe_read(fd, (void *)&nett, 4) != 4) /* read time from server */ |