diff options
author | Marcos Mello <marcosfrm@gmail.com> | 2018-11-30 09:25:07 -0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2019-03-26 07:49:17 +0000 |
commit | 7b52da5ecdc43c2876e0e500302a8590714b0c95 (patch) | |
tree | ca6d6fd762d431eb56c0a7394f80086bd8909a16 | |
parent | d3e306433f7be4f0d190884ba078cd39d02ab318 (diff) | |
download | samba-7b52da5ecdc43c2876e0e500302a8590714b0c95.tar.gz |
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 <marcosfrm@gmail.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
(cherry picked from commit 440ddf8470b11a46066d282bf8945201d547c192)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11568
-rw-r--r-- | lib/util/become_daemon.c | 18 |
1 files 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); } |