diff options
| -rw-r--r-- | src/shared/nss-util.h | 18 | 
1 files changed, 16 insertions, 2 deletions
| diff --git a/src/shared/nss-util.h b/src/shared/nss-util.h index 2c897d8520..230a986040 100644 --- a/src/shared/nss-util.h +++ b/src/shared/nss-util.h @@ -23,6 +23,7 @@  #include <nss.h>  #include <netdb.h> +#include <resolv.h>  #define NSS_GETHOSTBYNAME_PROTOTYPES(module)            \  enum nss_status _nss_##module##_gethostbyname4_r(       \ @@ -87,14 +88,27 @@ enum nss_status _nss_##module##_gethostbyname_r(        \                  struct hostent *host,                   \                  char *buffer, size_t buflen,            \                  int *errnop, int *h_errnop) {           \ -        return _nss_##module##_gethostbyname3_r(        \ +        enum nss_status ret = NSS_STATUS_NOTFOUND;      \ +                                                        \ +        if (_res.options & RES_USE_INET6)               \ +                ret = _nss_##module##_gethostbyname3_r( \ +                        name,                           \ +                        AF_INET6,                       \ +                        host,                           \ +                        buffer, buflen,                 \ +                        errnop, h_errnop,               \ +                        NULL,                           \ +                        NULL);                          \ +        if (ret == NSS_STATUS_NOTFOUND)                 \ +                ret = _nss_##module##_gethostbyname3_r( \                          name,                           \ -                        AF_UNSPEC,                      \ +                        AF_INET,                        \                          host,                           \                          buffer, buflen,                 \                          errnop, h_errnop,               \                          NULL,                           \                          NULL);                          \ +       return ret;                                      \  }  #define NSS_GETHOSTBYADDR_FALLBACKS(module)             \ | 
