X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/3540caec6116f7c66d43cabec178d5e622a10f76..3121b6a6a09b9ce77a5a8d6bb66e7bff8ff2e8b9:/src/transmit.c diff --git a/src/transmit.c b/src/transmit.c index 212c6ec..63e222c 100644 --- a/src/transmit.c +++ b/src/transmit.c @@ -222,10 +222,16 @@ static void query_usetcp(adns_query qu, struct timeval now) { adns__tcp_tryconnect(qu->ads,now); } +struct udpsocket *adns__udpsocket_by_af(adns_state ads, int af) { + int i; + for (i=0; inudp; i++) + if (ads->udpsocket[i].af == af) return &ads->udpsocket[i]; + return 0; +} + void adns__query_send(adns_query qu, struct timeval now) { int serv, r, i; adns_state ads; - int fd = -1; struct udpsocket *udp; adns_rr_addr *addr; @@ -243,13 +249,10 @@ void adns__query_send(adns_query qu, struct timeval now) { ads= qu->ads; serv= qu->udpnextserver; addr= &ads->servers[serv]; - for (i = 0; i < ads->nudp; i++) { - udp = &ads->udpsocket[i]; - if (udp->ai->af == addr->addr.sa.sa_family) { fd = udp->fd; break; } - } - assert(fd >= 0); + udp= adns__udpsocket_by_af(ads, addr->addr.sa.sa_family); + assert(udp); - r= sendto(fd,qu->query_dgram,qu->query_dglen,0, + r= sendto(udp->fd,qu->query_dgram,qu->query_dglen,0, &addr->addr.sa,addr->len); if (r<0 && errno == EMSGSIZE) { qu->retries= 0;