From f7f488d8e9740d64cf82b7ef41e55d4f36fe1a43 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Fri, 18 Oct 2019 21:16:39 +0200 Subject: [PATCH] BUG/MINOR: mworker/cli: reload fail with inherited FD When using the master CLI with 'fd@', during a reload, the master CLI proxy is stopped. Unfortunately if this is an inherited FD it is closed too, and the master CLI won't be able to bind again during the re-execution. It lead the master to fallback in waitpid mode. This patch forbids the inherited FDs in the master's listeners to be closed during a proxy_stop(). This patch is mandatory to use the -W option in VTest versions that contain the -mcli feature. (https://github.com/vtest/VTest/commit/86e65f1024453b1074d239a88330b5150d3e44bb) Should be backported as far as 1.9. --- src/proxy.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/proxy.c b/src/proxy.c index 6386812fb..ebc6415bd 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1262,7 +1262,11 @@ void stop_proxy(struct proxy *p) nostop = 1; continue; } - unbind_listener(l); + /* The master should not close an inherited FD */ + if (master && (l->options & LI_O_INHERITED)) + unbind_listener_no_close(l); + else + unbind_listener(l); if (l->state >= LI_ASSIGNED) { delete_listener(l); }