Skip to content

Commit

Permalink
[LLDB] Do not try to canonicalize gethostname() result
Browse files Browse the repository at this point in the history
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
  • Loading branch information
davezarzycki committed Sep 11, 2019
1 parent e496121 commit b250d5f
Showing 1 changed file with 1 addition and 12 deletions.
13 changes: 1 addition & 12 deletions lldb/source/Host/posix/HostInfoPosix.cpp
Expand Up @@ -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>
Expand All @@ -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;
Expand Down

0 comments on commit b250d5f

Please sign in to comment.