mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-14 02:57:01 +02:00
BUG/MEDIUM: listener: don't report an error when resuming unbound listeners
Pavlos Parissis reported that a sequence of disable/enable on a frontend performed on the CLI can result in an error if the frontend has several "bind" lines each bound to different processes. This is because the resume_listener() function returns a failure for frontends not part of the current process instead of returning a success to pretend there was no failure. This fix should be backported to 1.5.
This commit is contained in:
parent
10146c9c51
commit
af2fd584f3
@ -121,9 +121,10 @@ int pause_listener(struct listener *l)
|
|||||||
* may replace enable_listener(). The resulting state will either be LI_READY
|
* may replace enable_listener(). The resulting state will either be LI_READY
|
||||||
* or LI_FULL. 0 is returned in case of failure to resume (eg: dead socket).
|
* or LI_FULL. 0 is returned in case of failure to resume (eg: dead socket).
|
||||||
* Listeners bound to a different process are not woken up unless we're in
|
* Listeners bound to a different process are not woken up unless we're in
|
||||||
* foreground mode. If the listener was only in the assigned state, it's totally
|
* foreground mode, and are ignored. If the listener was only in the assigned
|
||||||
* rebound. This can happen if a pause() has completely stopped it. If the
|
* state, it's totally rebound. This can happen if a pause() has completely
|
||||||
* resume fails, 0 is returned and an error might be displayed.
|
* stopped it. If the resume fails, 0 is returned and an error might be
|
||||||
|
* displayed.
|
||||||
*/
|
*/
|
||||||
int resume_listener(struct listener *l)
|
int resume_listener(struct listener *l)
|
||||||
{
|
{
|
||||||
@ -147,7 +148,7 @@ int resume_listener(struct listener *l)
|
|||||||
if ((global.mode & (MODE_DAEMON | MODE_SYSTEMD)) &&
|
if ((global.mode & (MODE_DAEMON | MODE_SYSTEMD)) &&
|
||||||
l->bind_conf->bind_proc &&
|
l->bind_conf->bind_proc &&
|
||||||
!(l->bind_conf->bind_proc & (1UL << (relative_pid - 1))))
|
!(l->bind_conf->bind_proc & (1UL << (relative_pid - 1))))
|
||||||
return 0;
|
return 1;
|
||||||
|
|
||||||
if (l->proto->sock_prot == IPPROTO_TCP &&
|
if (l->proto->sock_prot == IPPROTO_TCP &&
|
||||||
l->state == LI_PAUSED &&
|
l->state == LI_PAUSED &&
|
||||||
|
Loading…
Reference in New Issue
Block a user