From: William Lallemand Date: Fri, 18 Oct 2019 19:16:39 +0000 (+0200) Subject: BUG/MINOR: mworker/cli: reload fail with inherited FD X-Git-Tag: v2.1-dev3~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f7f488d8e9740d64cf82b7ef41e55d4f36fe1a43;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/proxy.c b/src/proxy.c index 6386812fb3..ebc6415bd4 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); }