]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix bug #2083 -- Fix sockaddr_to_ascii for FreeBSD
authorKern Sibbald <kern@sibbald.com>
Thu, 15 Oct 2015 03:59:50 +0000 (20:59 -0700)
committerKern Sibbald <kern@sibbald.com>
Thu, 15 Oct 2015 03:59:50 +0000 (20:59 -0700)
bacula/src/lib/address_conf.c

index 59dbd0f31c8dfd7f88c7b341ba84807be4e25af4..66a49d2aec88b127b1aab1b81a2c7af54067a4a2 100644 (file)
@@ -613,10 +613,19 @@ char *sockaddr_to_ascii(const struct sockaddr *sa, int socklen, char *buf, int b
   /* This is the more modern way of doing it */
   char clienthost[NI_MAXHOST];
   char clientservice[NI_MAXSERV];
-  int status;
-  status = getnameinfo(sa, socklen, clienthost, sizeof(clienthost),
-                       clientservice, sizeof(clientservice),
-                       NI_NUMERICHOST | NI_NUMERICSERV);
+  int status = 1;
+  if (sa->sa_family == AF_INET) {
+     status = getnameinfo(sa, socklen, clienthost, sizeof(clienthost),
+                 clientservice, sizeof(clientservice),
+                 NI_NUMERICHOST | NI_NUMERICSERV);
+  }
+#ifdef HAVE_IPV6
+  else {
+     status = getnameinfo(sa, sizeof(sockaddr_in6), clienthost, sizeof(clienthost),
+                 clientservice, sizeof(clientservice),
+                 NI_NUMERICHOST | NI_NUMERICSERV);
+  }
+#endif
   if (status == 0) {
      /* Enclose IPv6 in [] */
      if (strchr(clienthost, ':') != NULL) {