Skip to content

Commit 113745e

Browse files
einval22wlallemand
authored andcommitted
BUG/MINOR: cli: don't show sockpairs in HAPROXY_CLI and HAPROXY_MASTER_CLI
Before this fix, HAPROXY_CLI and HAPROXY_MASTER_CLI have contained along with CLI sockets addresses internal sockpairs, which are used only for master CLI (reload sockpair and sockpair shared with a worker process). These internal sockpairs are always need to be hidden. At the moment there is no any client, who uses sockpair addresses for the stats listener or in order to connect to master CLI. So, let's simply not copy these internal sockpair addresses of MASTER and GLOBAL proxy listeners. As listeners with sockpairs are skipped and they can be presented in the listeners list in any order, let's add semicolon separator between addresses only in the case, when there are already some string saved in the trash and we are sure, that we are adding a new address to it. Otherwise, we could have such weird output: HAPROXY_MASTER_CLI=unix@/tmp/mcli.sock;; This fix is need to be backported in all stable versions.
1 parent 1f0cd91 commit 113745e

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/cli.c

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -651,10 +651,6 @@ int listeners_setenv(struct proxy *frontend, const char *varname)
651651
char addr[46];
652652
char port[6];
653653

654-
/* separate listener by semicolons */
655-
if (trash->data)
656-
chunk_appendf(trash, ";");
657-
658654
if (l->rx.addr.ss_family == AF_UNIX ||
659655
l->rx.addr.ss_family == AF_CUST_ABNS ||
660656
l->rx.addr.ss_family == AF_CUST_ABNSZ) {
@@ -663,21 +659,22 @@ int listeners_setenv(struct proxy *frontend, const char *varname)
663659
un = (struct sockaddr_un *)&l->rx.addr;
664660
if (l->rx.addr.ss_family == AF_CUST_ABNS ||
665661
l->rx.addr.ss_family == AF_CUST_ABNSZ) {
666-
chunk_appendf(trash, "abns@%s", un->sun_path+1);
662+
chunk_appendf(trash, "%sabns@%s", (trash->data ? ";" : ""), un->sun_path+1);
667663
} else {
668-
chunk_appendf(trash, "unix@%s", un->sun_path);
664+
chunk_appendf(trash, "%sunix@%s", (trash->data ? ";" : ""), un->sun_path);
669665
}
670666
} else if (l->rx.addr.ss_family == AF_INET) {
671667
addr_to_str(&l->rx.addr, addr, sizeof(addr));
672668
port_to_str(&l->rx.addr, port, sizeof(port));
673-
chunk_appendf(trash, "ipv4@%s:%s", addr, port);
669+
chunk_appendf(trash, "%sipv4@%s:%s", (trash->data ? ";" : ""), addr, port);
674670
} else if (l->rx.addr.ss_family == AF_INET6) {
675671
addr_to_str(&l->rx.addr, addr, sizeof(addr));
676672
port_to_str(&l->rx.addr, port, sizeof(port));
677-
chunk_appendf(trash, "ipv6@[%s]:%s", addr, port);
678-
} else if (l->rx.addr.ss_family == AF_CUST_SOCKPAIR) {
679-
chunk_appendf(trash, "sockpair@%d", ((struct sockaddr_in *)&l->rx.addr)->sin_addr.s_addr);
673+
chunk_appendf(trash, "%sipv6@[%s]:%s", (trash->data ? ";" : ""), addr, port);
680674
}
675+
/* AF_CUST_SOCKPAIR is explicitly skipped, we don't want to show reload and shared
676+
* master CLI sockpairs in HAPROXY_CLI and HAPROXY_MASTER_CLI
677+
*/
681678
}
682679
}
683680
trash->area[trash->data++] = '\0';

0 commit comments

Comments
 (0)