From ebe5b1b1b2256090e9fe8f41ecf5b9e2fc497b27 Mon Sep 17 00:00:00 2001 From: Marcos Mello Date: Fri, 30 Nov 2018 09:25:07 -0200 Subject: [PATCH] Send status to systemd on daemon start systemd service files run in no-forking mode (--foreground) since 8b6f58194da7e849cdb9d20712dff49b17a93a77. Rearrange sd_notify() call in become_daemon() to only send status to systemd in this mode (Type=notify is not designed to monitor forking). Drop READY=0 (it does nothing) and MAINPID= (unnecessary because the process spawned by systemd is already the main PID). Also remove STATUS= prefix from debug messages. Signed-off-by: Marcos Mello Reviewed-by: Andreas Schneider Reviewed-by: Alexander Bokovoy Reviewed-by: Andrew Bartlett (cherry picked from commit 440ddf8470b11a46066d282bf8945201d547c192) --- lib/util/become_daemon.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/util/become_daemon.c b/lib/util/become_daemon.c index 232eda69b64..89991b7981c 100644 --- a/lib/util/become_daemon.c +++ b/lib/util/become_daemon.c @@ -73,14 +73,12 @@ void become_daemon(bool do_fork, bool no_session, bool log_stdout) exit_daemon("Fork failed", errno); } if (newpid) { -#if defined(HAVE_LIBSYSTEMD_DAEMON) || defined(HAVE_LIBSYSTEMD) - sd_notifyf(0, - "READY=0\nSTATUS=Starting process...\n" - "MAINPID=%lu", - (unsigned long) newpid); -#endif /* HAVE_LIBSYSTEMD_DAEMON */ _exit(0); } +#if defined(HAVE_LIBSYSTEMD_DAEMON) || defined(HAVE_LIBSYSTEMD) + } else { + sd_notify(0, "STATUS=Starting process..."); +#endif } /* detach from the terminal */ @@ -120,7 +118,7 @@ void exit_daemon(const char *msg, int error) msg, error); #endif - DBG_ERR("STATUS=daemon failed to start: %s, error code %d\n", + DBG_ERR("daemon failed to start: %s, error code %d\n", msg, error); exit(1); } @@ -134,7 +132,7 @@ void daemon_ready(const char *daemon) sd_notifyf(0, "READY=1\nSTATUS=%s: ready to serve connections...", daemon); #endif - DBG_ERR("STATUS=daemon '%s' finished starting up and ready to serve " + DBG_ERR("daemon '%s' finished starting up and ready to serve " "connections\n", daemon); } @@ -144,7 +142,7 @@ void daemon_status(const char *daemon, const char *msg) daemon = "Samba"; } #if defined(HAVE_LIBSYSTEMD_DAEMON) || defined(HAVE_LIBSYSTEMD) - sd_notifyf(0, "\nSTATUS=%s: %s", daemon, msg); + sd_notifyf(0, "STATUS=%s: %s", daemon, msg); #endif - DBG_ERR("STATUS=daemon '%s' : %s\n", daemon, msg); + DBG_ERR("daemon '%s' : %s\n", daemon, msg); } -- 2.21.0