From e9c8e0efc9e7c4c7e6bbbe61e7963baa6f71f8c8 Mon Sep 17 00:00:00 2001 From: Valentine Krasnobaeva Date: Tue, 22 Oct 2024 15:09:29 +0200 Subject: [PATCH] MINOR: mworker: stop MASTER proxy listener on worker mcli sockpair After sending its "READY" status worker should not keep the access to MASTER proxy, thus, it shouldn't be able to send any other commands further to master process. To achieve this, let's stop in master context master CLI listener attached on the sockpair shared with worker. We do this just after receiving the worker's status message. --- src/cli.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cli.c b/src/cli.c index 578957699..68ce8176d 100644 --- a/src/cli.c +++ b/src/cli.c @@ -2469,6 +2469,7 @@ static int cli_parse_simple(char **args, char *payload, struct appctx *appctx, v static int _send_status(char **args, char *payload, struct appctx *appctx, void *private) { + struct listener *mproxy_li; struct mworker_proc *proc; int pid; @@ -2479,8 +2480,11 @@ static int _send_status(char **args, char *payload, struct appctx *appctx, void list_for_each_entry(proc, &proc_list, list) { /* update status of the new worker */ - if (proc->pid == pid) + if (proc->pid == pid) { proc->options &= ~PROC_O_INIT; + mproxy_li = fdtab[proc->ipc_fd[0]].owner; + stop_listener(mproxy_li, 0, 0, 0); + } /* send TERM to workers, which have exceeded max_reloads counter */ if (max_reloads != -1) { if ((proc->options & PROC_O_TYPE_WORKER) &&