Fix /uping on IPv6-enabled FreeBSD builds (#1435373).
[ircu2.10.12-pk.git] / ircd / s_bsd.c
index 6ce42154deed60315319f03f0d949cdfe5be15c0..b076c0ec36f50387c59c7a1973959fb0e0bc30ac 100644 (file)
@@ -207,6 +207,8 @@ static int connect_inet(struct ConfItem* aconf, struct Client* cptr)
 {
   const struct irc_sockaddr *local;
   IOResult result;
+  int family = 0;
+
   assert(0 != aconf);
   assert(0 != cptr);
   /*
@@ -215,11 +217,12 @@ static int connect_inet(struct ConfItem* aconf, struct Client* cptr)
    */
   if (irc_in_addr_valid(&aconf->origin.addr))
     local = &aconf->origin;
-  else if (irc_in_addr_is_ipv4(&aconf->address.addr))
+  else if (irc_in_addr_is_ipv4(&aconf->address.addr)) {
     local = &VirtualHost_v4;
-  else
+    family = AF_INET;
+  } else
     local = &VirtualHost_v6;
-  cli_fd(cptr) = os_socket(local, SOCK_STREAM, cli_name(cptr));
+  cli_fd(cptr) = os_socket(local, SOCK_STREAM, cli_name(cptr), family);
   if (cli_fd(cptr) < 0)
     return 0;