X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftimesync%2Ftimesyncd.c;h=2a73dac033c8fe1570febd1ac2fb16a3e1fdb26c;hb=c74f883c6f7d5901b3c543d47f64082ccd91a895;hp=351bfd0236de4437b216ec61667e6272645aa246;hpb=84e51726a38e133ca42d2f30f0668d3921b210cb;p=elogind.git diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c index 351bfd023..2a73dac03 100644 --- a/src/timesync/timesyncd.c +++ b/src/timesync/timesyncd.c @@ -73,7 +73,7 @@ static int load_clock_timestamp(uid_t uid, gid_t gid) { format_timestamp(date, sizeof(date), min)); if (clock_settime(CLOCK_REALTIME, timespec_store(&ts, min)) < 0) - log_error("Failed to restore system clock: %m"); + log_error_errno(errno, "Failed to restore system clock: %m"); } return 0; @@ -101,7 +101,7 @@ int main(int argc, char *argv[]) { r = get_user_creds(&user, &uid, &gid, NULL, NULL); if (r < 0) { - log_error("Cannot resolve user name %s: %s", user, strerror(-r)); + log_error_errno(r, "Cannot resolve user name %s: %m", user); goto finish; } @@ -113,11 +113,15 @@ int main(int argc, char *argv[]) { if (r < 0) goto finish; + /* We need one process for ourselves, plus one thread for the asynchronous resolver */ + if (setrlimit(RLIMIT_NPROC, &RLIMIT_MAKE_CONST(2)) < 0) + log_warning_errno(errno, "Failed to lower RLIMIT_NPROC to 2: %m"); + assert_se(sigprocmask_many(SIG_BLOCK, SIGTERM, SIGINT, -1) == 0); r = manager_new(&m); if (r < 0) { - log_error("Failed to allocate manager: %s", strerror(-r)); + log_error_errno(r, "Failed to allocate manager: %m"); goto finish; } @@ -129,10 +133,12 @@ int main(int argc, char *argv[]) { r = manager_parse_config_file(m); if (r < 0) - log_warning("Failed to parse configuration file: %s", strerror(-r)); + log_warning_errno(r, "Failed to parse configuration file: %m"); log_debug("systemd-timesyncd running as pid %lu", (unsigned long) getpid()); - sd_notify(false, "READY=1"); + sd_notify(false, + "READY=1\n" + "STATUS=Daemon is running"); if (network_is_online()) { r = manager_connect(m); @@ -142,7 +148,7 @@ int main(int argc, char *argv[]) { r = sd_event_loop(m->event); if (r < 0) { - log_error("Failed to run event loop: %s", strerror(-r)); + log_error_errno(r, "Failed to run event loop: %m"); goto finish; } @@ -153,7 +159,9 @@ int main(int argc, char *argv[]) { sd_event_get_exit_code(m->event, &r); finish: - sd_notify(false, "STATUS=Shutting down..."); + sd_notify(false, + "STOPPING=1\n" + "STATUS=Shutting down..."); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }