From a13b043dcc25387567d9e2c6624eb1f4bc9ecefb Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 20 Dec 2023 12:21:57 +0100 Subject: [PATCH] BUG/MINOR: server: Use the configured address family for the initial resolution A regression was introduced by the commit c886fb58eb ("MINOR: server/ip: centralize server ip updates"). The configured address family is lost when the server address is initialized during the startup, for the resolution based on the libc or based on the server state-file. Thus, "ipv4@" and "ipv6@" prefixed are ignored. To fix the bug, we take care to use the configured address family before calling str2ip2() in srv_apply_lastaddr() and srv_apply_via_libc() functions. This patch should fix the issue #2393. It must be backported to 2.9. (cherry picked from commit 3811c1de25bd8b05fb4684614883a0f04f304978) Signed-off-by: Christopher Faulet --- src/server.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server.c b/src/server.c index 0824ae6..8dc57f1 100644 --- a/src/server.c +++ b/src/server.c @@ -4433,6 +4433,9 @@ int srv_set_addr_via_libc(struct server *srv, int *err_code) struct sockaddr_storage new_addr; memset(&new_addr, 0, sizeof(new_addr)); + + /* Use the preferred family, if configured */ + new_addr.ss_family = srv->addr.ss_family; if (str2ip2(srv->hostname, &new_addr, 1) == NULL) { if (err_code) *err_code |= ERR_WARN; @@ -4517,6 +4520,9 @@ static int srv_apply_lastaddr(struct server *srv, int *err_code) struct sockaddr_storage new_addr; memset(&new_addr, 0, sizeof(new_addr)); + + /* Use the preferred family, if configured */ + new_addr.ss_family = srv->addr.ss_family; if (!str2ip2(srv->lastaddr, &new_addr, 0)) { if (err_code) *err_code |= ERR_WARN; -- 1.7.10.4