]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix inet_pton call.
authorMarco van Wieringen <mvw@planets.elm.net>
Tue, 26 Jun 2012 19:43:19 +0000 (21:43 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:50:51 +0000 (14:50 +0200)
inet_pton returns 1 when it succeeds so the test was wrong. When
it fails its either returns 0 if not a correct ipv6 address or
-1 when the protocol family is not known. Checked the man page
for both Linux and Solaris and this seems like an oversight as
the definition is the same on these OSes and probably on all others
as these functions tend to be rather portable.

Also did some small rewrite of the code so its easier to read and
the braces are easier to interpret.

bacula/src/lib/bnet.c

index a2b18370b33283614903f4fde5457be73c38e21f..b6775230e0254f06e08854b8a9a481f83bf18110 100644 (file)
@@ -576,16 +576,14 @@ dlist *bnet_host2ipaddrs(const char *host, int family, const char **errstr)
       addr->set_type(IPADDR::R_MULTIPLE);
       addr->set_addr4(&inaddr);
       addr_list->append(addr);
-   } else
 #ifdef HAVE_IPV6
-   if (inet_pton(AF_INET6, host, &inaddr6) > 1) {
+   } else if (inet_pton(AF_INET6, host, &inaddr6) == 1) {
       addr = New(IPADDR(AF_INET6));
       addr->set_type(IPADDR::R_MULTIPLE);
       addr->set_addr6(&inaddr6);
       addr_list->append(addr);
-   } else
 #endif
-   {
+   } else {
       if (family != 0) {
          errmsg = resolv_host(family, host, addr_list);
          if (errmsg) {