Author: amc
Date: Fri Sep 16 20:08:58 2011
New Revision: 1171753
URL: http://svn.apache.org/viewvc?rev=1171753&view=rev
Log:
DNS fixes for TS-958 - remove self copying.
Modified:
trafficserver/traffic/trunk/iocore/dns/DNS.cc
trafficserver/traffic/trunk/lib/ts/ink_res_init.cc
Modified: trafficserver/traffic/trunk/iocore/dns/DNS.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/dns/DNS.cc?rev=1171753&r1=1171752&r2=1171753&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/dns/DNS.cc (original)
+++ trafficserver/traffic/trunk/iocore/dns/DNS.cc Fri Sep 16 20:08:58 2011
@@ -419,7 +419,7 @@ DNSHandler::open_con(sockaddr const* tar
Debug("dns", "open_con: opening connection %s", ink_inet_nptop(target,
ip_text, sizeof ip_text));
- if (!icon) {
+ if (!icon && target) {
ink_inet_copy(&ip, target);
}
@@ -510,7 +510,7 @@ DNSHandler::startEvent(int event, Event
}
dns_ns_rr_init_down = 0;
} else {
- open_con(&ip.sa);
+ open_con(0); // use current target address.
n_con = 1;
}
e->ethread->schedule_every(this, DNS_PERIOD);
Modified: trafficserver/traffic/trunk/lib/ts/ink_res_init.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_res_init.cc?rev=1171753&r1=1171752&r2=1171753&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_res_init.cc (original)
+++ trafficserver/traffic/trunk/lib/ts/ink_res_init.cc Fri Sep 16 20:08:58 2011
@@ -118,9 +118,20 @@ ink_res_setservers(ink_res_state statp,
/* cause rtt times to be forgotten */
statp->nscount = 0;
+ /* The goal here seems to be to compress the source list (@a set) by
+ squeezing out invalid addresses. We handle the special case where
+ the destination and sourcea are the same.
+ */
int nserv = 0;
for ( ts_ip_endpoint const* limit = set + cnt ; nserv < INK_MAXNS && set <
limit ; ++set ) {
- if (ink_inet_copy(&statp->nsaddr_list[nserv].sa, &set->sa)) ++nserv;
+ ts_ip_endpoint* dst = &statp->nsaddr_list[nserv];
+
+ if (dst == set) {
+ if (ink_inet_is_ip(&set->sa))
+ ++nserv;
+ } else if (ink_inet_copy(&dst->sa, &set->sa)) {
+ ++nserv;
+ }
}
statp->nscount = nserv;
}