]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: Also accept SIGHUP/SIGTERM in systemd-wrapper
authorMatt Robenolt <matt@ydekproductions.com>
Thu, 11 Sep 2014 05:19:30 +0000 (05:19 +0000)
committerWilly Tarreau <w@1wt.eu>
Thu, 11 Sep 2014 05:30:38 +0000 (07:30 +0200)
My proposal is to let haproxy-systemd-wrapper also accept normal
SIGHUP/SIGTERM signals to play nicely with other process managers
besides just systemd. In my use case, this will be for using with
runit which has to ability to change the signal used for a
"reload" or "stop" command. It also might be worth renaming this
bin to just haproxy-wrapper or something of that sort to separate
itself away from systemd. But that's a different discussion. :)

src/haproxy-systemd-wrapper.c

index 90a94ce47fdb41557bb2a70c7e2287937ed2b1f0..cc8baa87b2ae45c862e913e9469e10380a4edcc4 100644 (file)
@@ -158,7 +158,9 @@ int main(int argc, char **argv)
        memset(&sa, 0, sizeof(struct sigaction));
        sa.sa_handler = &signal_handler;
        sigaction(SIGUSR2, &sa, NULL);
+       sigaction(SIGHUP, &sa, NULL);
        sigaction(SIGINT, &sa, NULL);
+       sigaction(SIGTERM, &sa, NULL);
 
        if (getenv(REEXEC_FLAG) != NULL) {
                /* We are being re-executed: restart HAProxy gracefully */
@@ -180,11 +182,11 @@ int main(int argc, char **argv)
 
        status = -1;
        while (-1 != wait(&status) || errno == EINTR) {
-               if (caught_signal == SIGUSR2) {
+               if (caught_signal == SIGUSR2 || caught_signal == SIGHUP) {
                        caught_signal = 0;
                        do_restart();
                }
-               else if (caught_signal == SIGINT) {
+               else if (caught_signal == SIGINT || caught_signal == SIGTERM) {
                        caught_signal = 0;
                        do_shutdown();
                }