int i;
adns_rr_addr *ss;
const afinfo *ai;
+ char buf[MAX_ADDRSTRLEN];
ai = find_afinfo(sa->sa_family);
if (!ai) {
adns__diag(ads,-1,0,
"nameserver %s for unknown address family %d ignored",
- adns__sockaddr_ntoa(sa, n), sa->sa_family);
+ adns__sockaddr_ntoa(sa, n, buf), sa->sa_family);
}
for (i=0; i<ads->nservers; i++) {
if (ads->servers[i].addr.sa.sa_family == sa->sa_family &&
ai->sockaddr_equalp(sa, &ads->servers[i].addr.sa)) {
adns__debug(ads,-1,0,"duplicate nameserver %s ignored",
- adns__sockaddr_ntoa(sa, n));
+ adns__sockaddr_ntoa(sa, n, buf));
return;
}
}
if (ads->nservers>=MAXSERVERS) {
adns__diag(ads,-1,0,"too many nameservers, ignoring %s",
- adns__sockaddr_ntoa(sa, n));
+ adns__sockaddr_ntoa(sa, n, buf));
return;
}
static void ccf_nameserver(adns_state ads, const char *fn,
int lno, const char *buf) {
struct addrinfo *ai, ai_hint = { 0 };
+ char addrbuf[MAX_ADDRSTRLEN];
int err;
ai_hint.ai_family = AF_UNSPEC;
}
adns__debug(ads,-1,0,"using nameserver %s",
- adns__sockaddr_ntoa(ai->ai_addr, ai->ai_addrlen));
+ adns__sockaddr_ntoa(ai->ai_addr, ai->ai_addrlen, addrbuf));
addserver(ads, ai->ai_addr, ai->ai_addrlen);
freeaddrinfo(ai);
}
if (ads->logfn && ads->iflags & adns_if_debug)
adns__lprintf(ads,"adns: no nameservers, using IPv4 localhost\n");
memset(&sin, 0, sizeof(sin));
+ sin.sin_family = AF_INET;
sin.sin_port = htons(DNS_PORT);
sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
addserver(ads,(struct sockaddr *)&sin, sizeof(sin));
proto= getprotobyname("udp"); if (!proto) { r= ENOPROTOOPT; goto x_free; }
ads->nudp = 0;
for (i = 0; i < ads->nservers; i++) {
- for (j = 0; j < ads->nudp; j++) {
- if (ads->udpsocket[j].ai->af == ads->servers[i].addr.sa.sa_family)
- goto afmatch;
- }
-
+ if (adns__udpsocket_by_af(ads, ads->servers[i].addr.sa.sa_family))
+ continue;
assert(ads->nudp < MAXUDP);
udp = &ads->udpsocket[ads->nudp];
udp->ai = find_afinfo(ads->servers[i].addr.sa.sa_family);
r= adns__setnonblock(ads,udp->fd);
if (r) { r= errno; goto x_closeudp; }
ads->nudp++;
-
- afmatch:;
}
return 0;