summaryrefslogtreecommitdiff
path: root/lib/util/util_net.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util/util_net.c')
-rw-r--r--lib/util/util_net.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/util/util_net.c b/lib/util/util_net.c
index 566bf56e8f..23d25acab9 100644
--- a/lib/util/util_net.c
+++ b/lib/util/util_net.c
@@ -73,10 +73,9 @@ bool interpret_string_addr_internal(struct addrinfo **ppres,
ppres);
if (ret) {
- DEBUG(3,("interpret_string_addr_internal: getaddrinfo failed "
- "for name %s [%s]\n",
- str,
- gai_strerror(ret) ));
+ DEBUG(3, ("interpret_string_addr_internal: "
+ "getaddrinfo failed for name %s (flags %d) [%s]\n",
+ str, flags, gai_strerror(ret)));
return false;
}
return true;
@@ -97,6 +96,7 @@ static bool interpret_string_addr_pref(struct sockaddr_storage *pss,
#if defined(HAVE_IPV6)
char addr[INET6_ADDRSTRLEN];
unsigned int scope_id = 0;
+ int int_flags;
if (strchr_m(str, ':')) {
char *p = strchr_m(str, '%');
@@ -117,7 +117,13 @@ static bool interpret_string_addr_pref(struct sockaddr_storage *pss,
zero_sockaddr(pss);
- if (!interpret_string_addr_internal(&res, str, flags|AI_ADDRCONFIG)) {
+ if (flags & AI_NUMERICHOST) {
+ int_flags = flags;
+ } else {
+ int_flags = flags|AI_ADDRCONFIG;
+ }
+
+ if (!interpret_string_addr_internal(&res, str, int_flags)) {
return false;
}
if (!res) {