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 15c48ca..f4fcab1 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 */