X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=mts%2Fsmtp%2Fhosts.c;h=94a22d5a710963a35861fc5095052516441535d4;hb=e39c2471b6e2166d2e8a4cb515b4493936cf5203;hp=33eb9e66ebd18599fbbf25394661da185ed378cc;hpb=13f84dd50ca5754391dbd3296a5c7425f9363600;p=mmh diff --git a/mts/smtp/hosts.c b/mts/smtp/hosts.c index 33eb9e6..94a22d5 100644 --- a/mts/smtp/hosts.c +++ b/mts/smtp/hosts.c @@ -2,8 +2,6 @@ /* * hosts.c -- find out the official name of a host * - * $Id$ - * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. @@ -18,6 +16,7 @@ #include #include +#include #include static struct host { @@ -38,26 +37,28 @@ OfficialName (char *name) { unsigned char *p; char *q, site[BUFSIZ]; - struct hostent *hp; + struct addrinfo hints, *res; static char buffer[BUFSIZ]; char **r; struct host *h; - for (p = name, q = site; *p && (q - site < sizeof(site) - 1); p++, q++) + for (p = name, q = site; *p && (q - site < (int)sizeof(site) - 1); p++, q++) *q = isupper (*p) ? tolower (*p) : *p; *q = '\0'; q = site; - if (!mh_strcasecmp (LocalName(), site)) - return LocalName(); + if (!mh_strcasecmp (LocalName(1), site)) + return LocalName(1); -#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 ()) {