[LLDB] Do not try to canonicalize gethostname() result
authorDavid Zarzycki <dave@znu.io>
Wed, 11 Sep 2019 08:32:37 +0000 (08:32 +0000)
committerDavid Zarzycki <dave@znu.io>
Wed, 11 Sep 2019 08:32:37 +0000 (08:32 +0000)
This code is trying too hard and failing. Either the result of
gethostname() is canonical or it is not. If it is not, then trying to
canonicalize it is – for various reasons – a lost cause. For example, a
given machine might have multiple network interfaces with multiple
addresses per interface, each with a different canonical name.
Separably, the result of HostInfoPosix::GetHostname() and latency
thereof shouldn't depend on whether networking is up or down or what
network the machine happened to be attached to at any given moment (like
a laptop that travels between work and home).

https://reviews.llvm.org/D67230

llvm-svn: 371596

lldb/source/Host/posix/HostInfoPosix.cpp

index 78300fc..e7d0dee 100644 (file)
@@ -18,7 +18,6 @@
 #include <grp.h>
 #include <limits.h>
 #include <mutex>
-#include <netdb.h>
 #include <pwd.h>
 #include <stdlib.h>
 #include <sys/types.h>
@@ -32,17 +31,7 @@ bool HostInfoPosix::GetHostname(std::string &s) {
   char hostname[PATH_MAX];
   hostname[sizeof(hostname) - 1] = '\0';
   if (::gethostname(hostname, sizeof(hostname) - 1) == 0) {
-    struct addrinfo hints;
-    struct addrinfo *res = nullptr;
-    std::memset(&hints, 0, sizeof(hints));
-    hints.ai_flags = AI_CANONNAME;
-    int err = ::getaddrinfo(hostname, nullptr, &hints, &res);
-    if (err == 0) {
-      assert(res->ai_canonname && "getaddrinfo found a canonical name");
-      s.assign(res->ai_canonname);
-      freeaddrinfo(res);
-    } else
-      s.assign(hostname);
+    s.assign(hostname);
     return true;
   }
   return false;