]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: reload: do not fail when no socket is sent
authorWilly Tarreau <w@1wt.eu>
Fri, 28 Aug 2020 16:45:01 +0000 (18:45 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 28 Aug 2020 16:45:01 +0000 (18:45 +0200)
get_old_sockets() mistakenly sets ret=0 instead of ret2=0 before leaving
when the old process announces zero FD. So it will return an error
instead of success. This must be particularly rare not to have a
single socket to offer though!

A few comments were added to make it more obvious what to expect in
return.

This must be backported to 1.8 since the bug has always been there.

src/haproxy.c

index a8d27f84e1a0f405403014c3ed7b3aaeb9701438..03a05cdd489ce5e277ee144bede4b29666865e19 100644 (file)
@@ -1122,6 +1122,10 @@ next_dir_entry:
        free(err);
 }
 
+/* Retrieves old sockets from worker process running the CLI at address
+ * <unixsocket>. Fills xfer_sock_list with what is found. Returns 0 on
+ * success, -1 on failure.
+ */
 static int get_old_sockets(const char *unixsocket)
 {
        char *cmsgbuf = NULL, *tmpbuf = NULL;
@@ -1173,7 +1177,7 @@ static int get_old_sockets(const char *unixsocket)
                goto out;
        }
        if (fd_nb == 0) {
-               ret = 0;
+               ret2 = 0;
                goto out;
        }
        tmpbuf = malloc(fd_nb * (1 + MAXPATHLEN + 1 + IFNAMSIZ + sizeof(int)));