diff options
author | Jan Engelhardt <[email protected]> | 2019-02-06 22:43:18 +0000 |
---|---|---|
committer | Jan Engelhardt <[email protected]> | 2019-02-06 22:46:06 +0000 |
commit | e1faa925936b919ef164aea7791950826b59fd8b (patch) | |
tree | 4d4826c6c4cd3fe56fbc9ddb359ef6ed5119a584 /src | |
parent | Merge pull request #210 from jengelh/twoaddr (diff) | |
download | vmime-e1faa925936b919ef164aea7791950826b59fd8b.tar.gz vmime-e1faa925936b919ef164aea7791950826b59fd8b.zip |
Unbreak own hostname qualification on POSIX systems
Partial revert commit v0.9.2-6-g9a3d6880 (issue #160), because
invoking getaddrinfo(NULL, ... AI_CANONNAME) is illegal and never
succeeds.
Diffstat (limited to 'src')
-rw-r--r-- | src/vmime/platforms/posix/posixHandler.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/vmime/platforms/posix/posixHandler.cpp b/src/vmime/platforms/posix/posixHandler.cpp index f8861315..eecdbea9 100644 --- a/src/vmime/platforms/posix/posixHandler.cpp +++ b/src/vmime/platforms/posix/posixHandler.cpp @@ -159,6 +159,10 @@ static inline bool isAcceptableHostname(const vmime::string& str) { const vmime::string posixHandler::getHostName() const { + char hostname[256]; + + ::gethostname(hostname, sizeof(hostname)); + hostname[sizeof(hostname)-1] = '\0'; // Try to get official canonical name of this host struct addrinfo hints; @@ -169,8 +173,7 @@ const vmime::string posixHandler::getHostName() const { struct addrinfo* info; - if (getaddrinfo(NULL, "http", &hints, &info) == 0) { - + if (getaddrinfo(hostname, "http", &hints, &info) == 0) { // First, try to get a Fully-Qualified Domain Name (FQDN) for (struct addrinfo* p = info ; p != NULL ; p = p->ai_next) { @@ -202,11 +205,6 @@ const vmime::string posixHandler::getHostName() const { freeaddrinfo(info); } - // Get host name - char hostname[256]; - ::gethostname(hostname, sizeof(hostname)); - hostname[sizeof(hostname) - 1] = '\0'; - if (::strlen(hostname) == 0 || !isAcceptableHostname(hostname)) { ::strcpy(hostname, "localhost.localdomain"); } |