diff options
Diffstat (limited to 'libc/dns/net/getaddrinfo.c')
-rw-r--r-- | libc/dns/net/getaddrinfo.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libc/dns/net/getaddrinfo.c b/libc/dns/net/getaddrinfo.c index cc8b8b4..269be56 100644 --- a/libc/dns/net/getaddrinfo.c +++ b/libc/dns/net/getaddrinfo.c @@ -108,6 +108,8 @@ #include <stdarg.h> #include "nsswitch.h" +#include "hosts_cache.h" + #ifdef ANDROID_CHANGES #include <sys/system_properties.h> #endif /* ANDROID_CHANGES */ @@ -2107,6 +2109,14 @@ _files_getaddrinfo(void *rv, void *cb_data, va_list ap) name = va_arg(ap, char *); pai = va_arg(ap, struct addrinfo *); + memset(&sentinel, 0, sizeof(sentinel)); + cur = &sentinel; + int gai_error = hc_getaddrinfo(name, NULL, pai, &cur); + if (gai_error != EAI_SYSTEM) { + *((struct addrinfo **)rv) = sentinel.ai_next; + return (gai_error == 0 ? NS_SUCCESS : NS_NOTFOUND); + } + // fprintf(stderr, "_files_getaddrinfo() name = '%s'\n", name); memset(&sentinel, 0, sizeof(sentinel)); cur = &sentinel; |