X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fmts.c;h=de7518c017387ee36448416d90fdbbe5c72789c7;hb=7e3a3c499d1637d633d385c1058947c02676e3c5;hp=cc5ff8e3bbfdee77ffc65d35c59831323233d224;hpb=13f84dd50ca5754391dbd3296a5c7425f9363600;p=mmh diff --git a/sbr/mts.c b/sbr/mts.c index cc5ff8e..de7518c 100644 --- a/sbr/mts.c +++ b/sbr/mts.c @@ -287,8 +287,7 @@ char * LocalName (void) { static char buffer[BUFSIZ] = ""; - struct hostent *hp; - + struct addrinfo hints, *res; #ifdef HAVE_UNAME struct utsname name; #endif @@ -303,20 +302,24 @@ LocalName (void) if (*localname) { strncpy (buffer, localname, sizeof(buffer)); } else { + memset(buffer, 0, sizeof(buffer)); #ifdef HAVE_UNAME /* first get our local name */ uname (&name); - strncpy (buffer, name.nodename, sizeof(buffer)); + strncpy (buffer, name.nodename, sizeof(buffer) - 1); #else /* first get our local name */ - gethostname (buffer, sizeof(buffer)); + gethostname (buffer, sizeof(buffer) - 1); #endif -#ifdef HAVE_SETHOSTENT - sethostent (1); -#endif /* now fully qualify our name */ - if ((hp = gethostbyname (buffer))) - strncpy (buffer, hp->h_name, sizeof(buffer)); + + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME; + hints.ai_family = PF_UNSPEC; + if (getaddrinfo(buffer, NULL, &hints, &res) == 0) { + strncpy(buffer, res->ai_canonname, sizeof(buffer) - 1); + freeaddrinfo(res); + } } /*