]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
write_prometheus: don't use AI_ADDRCONFIG for resolving bind address
authorWolf480pl <wolf480@interia.pl>
Tue, 21 Nov 2023 10:53:59 +0000 (11:53 +0100)
committerMatthias Runge <mrunge@matthias-runge.de>
Tue, 21 Nov 2023 16:01:35 +0000 (17:01 +0100)
Fixes #4150

write_prometheus uses getaddrinfo to resolve the bind address.
The AI_ADDRCONFIG flag causes getaddrinfo to refuse to resolve
0.0.0.0 when the system has no non-loopback IPv4 addresses configured
and refuse to resolve :: when the system has no non-loopback IPv6 configured.

We want binding to a wildcard address (0.0.0.0 or ::) to always work,
even if the network is down.

To achieve that, don't pass the AI_ADDRCONFIG flag
when resolving a bind address.

src/write_prometheus.c

index 6e519bc8a4a22e11b332a8d00084da9664c846de..63845b23a931f9a5ab83383851ea90b7218fe5d2 100644 (file)
@@ -757,7 +757,7 @@ static int prom_open_socket(int addrfamily) {
   struct addrinfo *res;
   int status = getaddrinfo(httpd_host, service,
                            &(struct addrinfo){
-                               .ai_flags = AI_PASSIVE | AI_ADDRCONFIG,
+                               .ai_flags = AI_PASSIVE,
                                .ai_family = addrfamily,
                                .ai_socktype = SOCK_STREAM,
                            },