X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=mts%2Fsmtp%2Fhosts.c;fp=mts%2Fsmtp%2Fhosts.c;h=908e6194d469989546ddb7394cf3644c42974e64;hp=33eb9e66ebd18599fbbf25394661da185ed378cc;hb=7b98850d3b8b2453b473fdfb6db52f4aa3fe39b6;hpb=439d79535278cca4149434a457874addd94fee0f diff --git a/mts/smtp/hosts.c b/mts/smtp/hosts.c index 33eb9e6..908e619 100644 --- a/mts/smtp/hosts.c +++ b/mts/smtp/hosts.c @@ -38,7 +38,7 @@ OfficialName (char *name) { unsigned char *p; char *q, site[BUFSIZ]; - struct hostent *hp; + struct addrinfo hints, *res; static char buffer[BUFSIZ]; char **r; @@ -52,12 +52,14 @@ OfficialName (char *name) if (!mh_strcasecmp (LocalName(), site)) return LocalName(); -#ifdef HAVE_SETHOSTENT - sethostent (1); -#endif + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME; + hints.ai_family = PF_UNSPEC; - if ((hp = gethostbyname (q))) { - strncpy (buffer, hp->h_name, sizeof(buffer)); + if (getaddrinfo(q, NULL, &hints, &res) == 0) { + strncpy (buffer, res->ai_canonname, sizeof(buffer)); + buffer[sizeof(buffer) - 1] = '\0'; + freeaddrinfo(res); return buffer; } if (hosts.h_name || init_hs ()) {