[BUG] stats: admin commands must check the proxy state
As reported by Bryan Talbot, enabling and disabling a server in a disabled proxy causes a segfault. Changing the weight can also cause a similar segfault.
This commit is contained in:
parent
1a4186d6a2
commit
613f0df88b
@ -639,6 +639,12 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (px->state == PR_STSTOPPED) {
|
||||
s->data_ctx.cli.msg = "Proxy is disabled.\n";
|
||||
si->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* if the weight is terminated with '%', it is set relative to
|
||||
* the initial weight, otherwise it is absolute.
|
||||
*/
|
||||
@ -749,6 +755,12 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (px->state == PR_STSTOPPED) {
|
||||
s->data_ctx.cli.msg = "Proxy is disabled.\n";
|
||||
si->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (sv->state & SRV_MAINTAIN) {
|
||||
/* The server is really in maintenance, we can change the server state */
|
||||
if (sv->tracked) {
|
||||
@ -804,6 +816,12 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (px->state == PR_STSTOPPED) {
|
||||
s->data_ctx.cli.msg = "Proxy is disabled.\n";
|
||||
si->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (! (sv->state & SRV_MAINTAIN)) {
|
||||
/* Not already in maintenance, we can change the server state */
|
||||
sv->state |= SRV_MAINTAIN;
|
||||
|
Loading…
x
Reference in New Issue
Block a user