mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 22:31:28 +02:00
BUG/MINOR: systemd: report the correct signal in debug message output
Commit c54bdd2 ("MINOR: Also accept SIGHUP/SIGTERM in systemd-wrapper") added support for extra signals but did not adapt the debug message, which continues to report incorrect signal types. Let's pass the signal number to the do_restart() and do_shutdown() functions so that the output matches the signal that was received.
This commit is contained in:
parent
1ab5e8642a
commit
2fadbe5b0a
@ -126,15 +126,18 @@ static void signal_handler(int signum)
|
|||||||
caught_signal = signum;
|
caught_signal = signum;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_restart(void)
|
/* handles SIGUSR2 and SIGHUP only */
|
||||||
|
static void do_restart(int sig)
|
||||||
{
|
{
|
||||||
setenv(REEXEC_FLAG, "1", 1);
|
setenv(REEXEC_FLAG, "1", 1);
|
||||||
fprintf(stderr, SD_NOTICE "haproxy-systemd-wrapper: re-executing\n");
|
fprintf(stderr, SD_NOTICE "haproxy-systemd-wrapper: re-executing on %s.\n",
|
||||||
|
sig == SIGUSR2 ? "SIGUSR2" : "SIGHUP");
|
||||||
|
|
||||||
execv(wrapper_argv[0], wrapper_argv);
|
execv(wrapper_argv[0], wrapper_argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_shutdown(void)
|
/* handles SIGTERM and SIGINT only */
|
||||||
|
static void do_shutdown(int sig)
|
||||||
{
|
{
|
||||||
int i, pid;
|
int i, pid;
|
||||||
char **pid_strv = NULL;
|
char **pid_strv = NULL;
|
||||||
@ -142,7 +145,8 @@ static void do_shutdown(void)
|
|||||||
for (i = 0; i < nb_pid; ++i) {
|
for (i = 0; i < nb_pid; ++i) {
|
||||||
pid = atoi(pid_strv[i]);
|
pid = atoi(pid_strv[i]);
|
||||||
if (pid > 0) {
|
if (pid > 0) {
|
||||||
fprintf(stderr, SD_DEBUG "haproxy-systemd-wrapper: SIGINT -> %d\n", pid);
|
fprintf(stderr, SD_DEBUG "haproxy-systemd-wrapper: %s -> %d.\n",
|
||||||
|
sig == SIGTERM ? "SIGTERM" : "SIGINT", pid);
|
||||||
kill(pid, SIGINT);
|
kill(pid, SIGINT);
|
||||||
free(pid_strv[i]);
|
free(pid_strv[i]);
|
||||||
}
|
}
|
||||||
@ -198,13 +202,15 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
status = -1;
|
status = -1;
|
||||||
while (caught_signal || wait(&status) != -1 || errno == EINTR) {
|
while (caught_signal || wait(&status) != -1 || errno == EINTR) {
|
||||||
|
int sig = caught_signal;
|
||||||
|
|
||||||
if (caught_signal == SIGUSR2 || caught_signal == SIGHUP) {
|
if (caught_signal == SIGUSR2 || caught_signal == SIGHUP) {
|
||||||
caught_signal = 0;
|
caught_signal = 0;
|
||||||
do_restart();
|
do_restart(sig);
|
||||||
}
|
}
|
||||||
else if (caught_signal == SIGINT || caught_signal == SIGTERM) {
|
else if (caught_signal == SIGINT || caught_signal == SIGTERM) {
|
||||||
caught_signal = 0;
|
caught_signal = 0;
|
||||||
do_shutdown();
|
do_shutdown(sig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user