From: Christian Grothoff Date: Thu, 8 Oct 2009 09:56:40 +0000 (+0000) Subject: fix code for certain types of /etc/hosts files X-Git-Tag: initial-import-from-subversion-38251~23366 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a8b0ab037820f6a9f405be3855ce8d3ebbd4399b;p=oweals%2Fgnunet.git fix code for certain types of /etc/hosts files --- 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) ) &&