Improve support for IPv4 vs IPv6 virtual hosts (fixes SF bugs #1087699, #1087668).
[ircu2.10.12-pk.git] / ircd / ircd_auth.c
index afbb9377ca7ca372a07c9b9a88ed6a548aa9475a..4a59e677f1c86fe19028115762399ee63e1da38a 100644 (file)
@@ -445,6 +445,7 @@ static void iauth_schedule_reconnect(struct IAuth *iauth)
  */
 static void iauth_reconnect(struct IAuth *iauth)
 {
+  struct irc_sockaddr *local;
   IOResult result;
   int fd;
 
@@ -456,7 +457,8 @@ static void iauth_reconnect(struct IAuth *iauth)
     gethost_byname(i_host(iauth), &i_query(iauth));
     return;
   }
-  fd = os_socket(&VirtualHost, SOCK_STREAM, "IAuth");
+  local = irc_in_addr_is_ipv4(&i_addr(iauth).addr) ? &VirtualHost_v4 : &VirtualHost_v6;
+  fd = os_socket(local, SOCK_STREAM, "IAuth");
   if (fd < 0)
     return;
   if (!os_set_sockbufs(fd, SERVER_TCP_WINDOW, SERVER_TCP_WINDOW)) {