[Bug 2641] Add systemd notify code to to track running server

bugzilla-daemon at bugzilla.mindrot.org bugzilla-daemon at bugzilla.mindrot.org
Sat Feb 4 02:16:54 AEDT 2017


https://bugzilla.mindrot.org/show_bug.cgi?id=2641

--- Comment #5 from Jakub Jelen <jjelen at redhat.com> ---
The test if the process is daemon passes for every process that is run
as a systemd service so it does not solve the problem for us. As the
result with the pushed change the 7.4p1 will not write PID file when
running as a systemd service.

I would consider a bit different approach. We can remember if we
already called daemon() using environment variable and prevent the
repeated calls if this variable is already set. This finally made it
working for me. The patch can look somehow like this:

diff -up openssh-7.4p1/misc.c.daemon openssh-7.4p1/misc.c
--- openssh-7.4p1/misc.c.daemon 2017-02-03 13:08:14.751282516 +0100
+++ openssh-7.4p1/misc.c        2017-02-03 13:08:14.778282474 +0100
@@ -1273,6 +1273,9 @@ daemonized(void)
                return 0;       /* parent is not init */
        if (getsid(0) != getpid())
                return 0;       /* not session leader */
+       if (getenv("_SSH_DAEMONIZED") == NULL)
+               return 0;       /* already reexeced */
+
        debug3("already daemonized");
        return 1;
 }
diff -up openssh-7.4p1/sshd.c.daemon openssh-7.4p1/sshd.c
--- openssh-7.4p1/sshd.c.daemon 2017-02-03 13:08:14.755282510 +0100
+++ openssh-7.4p1/sshd.c        2017-02-03 13:09:29.765164356 +0100
@@ -1866,6 +1866,7 @@ main(int ac, char **av)
                if (daemon(0, 0) < 0)
                        fatal("daemon() failed: %.200s",
strerror(errno));

+               setenv("_SSH_DAEMONIZED", "1", 1);
                disconnect_controlling_tty();
        }
        /* Reinitialize the log (because of the fork above). */

-- 
You are receiving this mail because:
You are watching someone on the CC list of the bug.
You are watching the assignee of the bug.


More information about the openssh-bugs mailing list