diff --git a/src/cli.c b/src/cli.c index 1befd8ee0..506e5e45c 100644 --- a/src/cli.c +++ b/src/cli.c @@ -2494,6 +2494,7 @@ static int _send_status(char **args, char *payload, struct appctx *appctx, void { struct listener *mproxy_li; struct mworker_proc *proc; + char *msg = "READY\n"; int pid; BUG_ON((strcmp(args[0], "_send_status") != 0), @@ -2537,6 +2538,15 @@ static int _send_status(char **args, char *payload, struct appctx *appctx, void nb_oldpids = tell_old_pids(oldpids_sig); } + if (daemon_fd[1] != -1) { + if (write(daemon_fd[1], msg, strlen(msg)) < 0) { + ha_alert("[%s.main()] Failed to write into pipe with parent process: %s\n", progname, strerror(errno)); + exit(1); + } + close(daemon_fd[1]); + daemon_fd[1] = -1; + } + load_status = 1; ha_notice("Loading success.\n"); diff --git a/src/mworker.c b/src/mworker.c index 5037d9d70..9096f0062 100644 --- a/src/mworker.c +++ b/src/mworker.c @@ -1250,6 +1250,11 @@ void mworker_apply_master_worker_mode(void) exit(EXIT_FAILURE); case 0: + if (daemon_fd[1] >= 0) { + close(daemon_fd[1]); + daemon_fd[1] = -1; + } + /* This one must not be exported, it's internal! */ unsetenv("HAPROXY_MWORKER_REEXEC"); ha_random_jump96(1);