From: William Lallemand Date: Wed, 27 Jul 2022 09:48:54 +0000 (+0200) Subject: MINOR: cli: emit a warning when _getsocks was used more than once X-Git-Tag: v2.7-dev3~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=519cd2021bda11231d461f5974b4e321d0b4eb29;p=thirdparty%2Fhaproxy.git MINOR: cli: emit a warning when _getsocks was used more than once The _getsocks CLI command can be used only once, after that the sockets are not available anymore. Emit a warning when the command was already used once. --- diff --git a/src/cli.c b/src/cli.c index 4724ba4f6b..9b1625f955 100644 --- a/src/cli.c +++ b/src/cli.c @@ -1981,6 +1981,7 @@ static int bind_parse_severity_output(char **args, int cur_arg, struct proxy *px /* Send all the bound sockets, always returns 1 */ static int _getsocks(char **args, char *payload, struct appctx *appctx, void *private) { + static int already_sent = 0; char *cmsgbuf = NULL; unsigned char *tmpbuf = NULL; struct cmsghdr *cmsg; @@ -2008,6 +2009,11 @@ static int _getsocks(char **args, char *payload, struct appctx *appctx, void *pr fd = remote->handle.fd; + if (already_sent) { + ha_warning("_getsocks: attempt to get sockets but they were already sent!\n"); + goto out; + } + /* Temporary set the FD in blocking mode, that will make our life easier */ old_fcntl = fcntl(fd, F_GETFL); if (old_fcntl < 0) { @@ -2144,6 +2150,8 @@ static int _getsocks(char **args, char *payload, struct appctx *appctx, void *pr } } + already_sent = 1; + /* flush pending stuff */ if (nb_queued) { iov.iov_len = curoff;