--- src/haproxy.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/src/haproxy.c b/src/haproxy.c index 076a7f4..96c39ab 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -265,6 +265,17 @@ void usage(char *name) /*********************************************************************/ /* + * upon SIGTERM, pass the same signal on to any children and exit + */ +void sig_term(struct sig_handler *sh) +{ + signal_unregister_handler(sh); + if (is_master) + kill(0, SIGTERM); + exit(0); +} + +/* * upon SIGUSR1, let's have a soft stop. Note that soft_stop() broadcasts * a signal zero to all subscribers. This means that it's as easy as * subscribing to signal 0 to get informed about an imminent shutdown. @@ -1098,6 +1109,7 @@ void run(int argc, char **argv) if (global.mode & MODE_MASTER_WORKER) signal_register_fct(SIGUSR2, sig_restart, SIGUSR2); signal_register_fct(SIGHUP, sig_dump_state, SIGHUP); + signal_register_fct(SIGTERM, sig_term, SIGTERM); signal_register_fct(SIGCHLD, sig_reaper, SIGCHLD); /* Always catch SIGPIPE even on platforms which define MSG_NOSIGNAL. -- 1.7.2.3