From a8b0ab037820f6a9f405be3855ce8d3ebbd4399b Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 8 Oct 2009 09:56:40 +0000 Subject: [PATCH] fix code for certain types of /etc/hosts files --- src/util/resolver_api.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/util/resolver_api.c b/src/util/resolver_api.c index b86e5c666..cc81aa6b8 100644 --- a/src/util/resolver_api.c +++ b/src/util/resolver_api.c @@ -311,7 +311,7 @@ GNUNET_RESOLVER_ip_get (struct GNUNET_SCHEDULER_Handle *sched, v6.sin6_len = sizeof(v6); #endif /* first, check if this is a numeric address */ - if ( ( (domain == AF_UNSPEC) ||(domain == AF_INET) ) && + if ( ( (domain == AF_UNSPEC) || (domain == AF_INET) ) && (0 == inet_pton (AF_INET, hostname, &v4.sin_addr)) ) @@ -319,7 +319,17 @@ GNUNET_RESOLVER_ip_get (struct GNUNET_SCHEDULER_Handle *sched, callback (callback_cls, (const struct sockaddr*) &v4, sizeof(v4)); - callback (callback_cls, NULL, 0); + if ( (domain == AF_UNSPEC) && + (0 == inet_pton (AF_INET6, + hostname, + &v6.sin6_addr)) ) + { + /* this can happen on some systems IF "hostname" is "localhost" */ + callback (callback_cls, + (const struct sockaddr*) &v6, + sizeof(v6)); + } + callback (callback_cls, NULL, 0); return; } if ( ( (domain == AF_UNSPEC) ||(domain == AF_INET) ) && -- 2.25.1