X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fircd_res.c;h=a37654931a9c59499b9c60f890d0eb66b4055a48;hb=2cc57cb6020fcf2d6cbfa8f1ca2472bacf9817e3;hp=feb1d82b8c04f512ed1e105141b84ae616b1d350;hpb=482194058738a873e2a92144e7bd8a36bc0cba81;p=ircu2.10.12-pk.git diff --git a/ircd/ircd_res.c b/ircd/ircd_res.c index feb1d82..a376549 100644 --- a/ircd/ircd_res.c +++ b/ircd/ircd_res.c @@ -140,6 +140,8 @@ extern struct irc_sockaddr irc_nsaddr_list[IRCD_MAXNS]; extern int irc_nscount; extern char irc_domain[HOSTLEN]; +struct irc_sockaddr ResolverAddr; + /** Check whether \a inp is a nameserver we use. * @param[in] inp Nameserver address. * @return Non-zero if we trust \a inp; zero if not. @@ -171,8 +173,10 @@ restart_resolver(void) if (!s_active(&res_socket)) { + struct irc_sockaddr *local; int fd; - fd = os_socket(&VirtualHost, SOCK_DGRAM, "Resolver UDP socket"); + local = irc_in_addr_valid(&ResolverAddr) ? &ResolverAddr : &VirtualHost; + fd = os_socket(local, SOCK_DGRAM, "Resolver UDP socket"); if (fd < 0) return; if (!socket_add(&res_socket, res_readreply, NULL, SS_DATAGRAM, SOCK_EVENT_READABLE, fd)) return;