From: Willy Tarreau Date: Fri, 28 Aug 2020 16:45:01 +0000 (+0200) Subject: BUG/MINOR: reload: do not fail when no socket is sent X-Git-Tag: v2.3-dev4~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=febbce87baf15b610d30172e37b98133e92159cc;p=thirdparty%2Fhaproxy.git BUG/MINOR: reload: do not fail when no socket is sent 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. --- diff --git a/src/haproxy.c b/src/haproxy.c index a8d27f84e1..03a05cdd48 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1122,6 +1122,10 @@ next_dir_entry: free(err); } +/* Retrieves old sockets from worker process running the CLI at address + * . 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)));