]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: cli: emit a warning when _getsocks was used more than once
authorWilliam Lallemand <wlallemand@haproxy.org>
Wed, 27 Jul 2022 09:48:54 +0000 (11:48 +0200)
committerWilliam Lallemand <wlallemand@haproxy.org>
Wed, 27 Jul 2022 09:48:54 +0000 (11:48 +0200)
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.

src/cli.c

index 4724ba4f6b3f117abed4e90cc4702e731d5044eb..9b1625f955f7778186376be8f003e490eeea5329 100644 (file)
--- 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;