]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: systemd: report it when execve() fails
authorWilly Tarreau <w@1wt.eu>
Tue, 25 Oct 2016 14:51:40 +0000 (16:51 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 25 Oct 2016 15:36:40 +0000 (17:36 +0200)
It's important to know that a signal sent to the wrapper had no effect
because something failed during execve(). Ideally more info (strerror)
should be reported. It would be nice to backport this to 1.6 and 1.5.

src/haproxy-systemd-wrapper.c

index 15c48caea56112d0b3c688b6fcd17d098ebce3b8..f4fcab106ea07960cc8fd1cf2e287b99b2da9bd6 100644 (file)
@@ -107,8 +107,12 @@ static void spawn_haproxy(char **pid_strv, int nb_pid)
                fprintf(stderr, "\n");
 
                execv(argv[0], argv);
+               fprintf(stderr, SD_NOTICE "haproxy-systemd-wrapper: execv(%s) failed, please try again later.\n", argv[0]);
                exit(1);
        }
+       else if (pid == -1) {
+               fprintf(stderr, SD_NOTICE "haproxy-systemd-wrapper: failed to fork(), please try again later.\n");
+       }
 }
 
 static int read_pids(char ***pid_strv)
@@ -180,6 +184,7 @@ static void do_restart(int sig)
        execv(wrapper_argv[0], wrapper_argv);
        /* failed, let's reinstall the signal handler and continue */
        setup_signal_handler();
+       fprintf(stderr, SD_NOTICE "haproxy-systemd-wrapper: re-exec(%s) failed.\n", wrapper_argv[0]);
 }
 
 /* handles SIGTERM and SIGINT only */