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.
(86e65f1024)

Should be backported as far as 1.9.
This commit is contained in:
William Lallemand 2019-10-18 21:16:39 +02:00 committed by William Lallemand
parent a9363eb6a5
commit f7f488d8e9

View File

@ -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);
}