chiark / gitweb /
socket-util: use IP address when hostname is not found
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 22 Oct 2014 03:20:59 +0000 (23:20 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 23 Oct 2014 04:26:35 +0000 (00:26 -0400)
socknameinfo_pretty() would fail for addresses without reverse DNS,
but we do not want that to happen.

src/shared/socket-util.c

index e3e54e8e089aeeec135b65e0754b8cf2cf1dec81..911dbfe55a409445f585fbc1d1d7b6ffe585b2eb 100644 (file)
@@ -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) {
         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;
 
                 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));
                         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;
 
         *_ret = ret;
         return 0;