From: Zbigniew Jędrzejewski-Szmek Date: Wed, 22 Oct 2014 03:20:59 +0000 (-0400) Subject: socket-util: use IP address when hostname is not found X-Git-Tag: v217~138 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=cb6518345fcc057ca6ed3d037253bb4eeab4d94e socket-util: use IP address when hostname is not found socknameinfo_pretty() would fail for addresses without reverse DNS, but we do not want that to happen. --- diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index e3e54e8e0..911dbfe55 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -633,20 +633,20 @@ int socknameinfo_pretty(union sockaddr_union *sa, socklen_t salen, char **_ret) r = getnameinfo(&sa->sa, salen, host, sizeof(host), NULL, 0, NI_IDN|NI_IDN_USE_STD3_ASCII_RULES); if (r != 0) { - _cleanup_free_ char *sockname = NULL; int saved_errno = errno; - r = sockaddr_pretty(&sa->sa, salen, true, &sockname); - if (r < 0) + r = sockaddr_pretty(&sa->sa, salen, true, &ret); + if (r < 0) { log_error("sockadd_pretty() failed: %s", strerror(-r)); - else - log_error("getnameinfo(%s) failed: %s", sockname, strerror(-r)); - return -saved_errno; - } + return r; + } - ret = strdup(host); - if (!ret) - return log_oom(); + log_debug("getnameinfo(%s) failed: %s", ret, strerror(saved_errno)); + } else { + ret = strdup(host); + if (!ret) + return log_oom(); + } *_ret = ret; return 0;