Lines 42-48
Link Here
|
42 |
import org.xbill.DNS.Lookup; |
42 |
import org.xbill.DNS.Lookup; |
43 |
import org.xbill.DNS.Record; |
43 |
import org.xbill.DNS.Record; |
44 |
import org.xbill.DNS.Resolver; |
44 |
import org.xbill.DNS.Resolver; |
45 |
import org.xbill.DNS.SimpleResolver; |
|
|
46 |
import org.xbill.DNS.TextParseException; |
45 |
import org.xbill.DNS.TextParseException; |
47 |
import org.xbill.DNS.Type; |
46 |
import org.xbill.DNS.Type; |
48 |
|
47 |
|
Lines 104-114
Link Here
|
104 |
clone.cache = new LinkedHashMap<String, InetAddress[]>(); |
103 |
clone.cache = new LinkedHashMap<String, InetAddress[]>(); |
105 |
CollectionProperty dnsServers = getServers(); |
104 |
CollectionProperty dnsServers = getServers(); |
106 |
try { |
105 |
try { |
107 |
clone.resolver = new ExtendedResolver(); |
106 |
String[] serverNames = new String[dnsServers.size()]; |
108 |
PropertyIterator dnsServIt = dnsServers.iterator(); |
107 |
PropertyIterator dnsServIt = dnsServers.iterator(); |
|
|
108 |
int index = 0; |
109 |
while (dnsServIt.hasNext()) { |
109 |
while (dnsServIt.hasNext()) { |
110 |
String dnsServer = dnsServIt.next().getStringValue(); |
110 |
serverNames[index] = dnsServIt.next().getStringValue(); |
111 |
((ExtendedResolver) clone.resolver).addResolver(new SimpleResolver(dnsServer)); |
111 |
index++; |
|
|
112 |
} |
113 |
clone.resolver = new ExtendedResolver(serverNames); |
114 |
if (log.isDebugEnabled()) { |
115 |
log.debug("Using DNS Resolvers: " + Arrays.asList(((ExtendedResolver) clone.resolver).getResolvers())); |
112 |
} |
116 |
} |
113 |
// resolvers will be chosen via round-robin |
117 |
// resolvers will be chosen via round-robin |
114 |
((ExtendedResolver) clone.resolver).setLoadBalance(true); |
118 |
((ExtendedResolver) clone.resolver).setLoadBalance(true); |
Lines 146-158
Link Here
|
146 |
*/ |
150 |
*/ |
147 |
private InetAddress[] requestLookup(String host) throws UnknownHostException { |
151 |
private InetAddress[] requestLookup(String host) throws UnknownHostException { |
148 |
InetAddress[] addresses = null; |
152 |
InetAddress[] addresses = null; |
149 |
if (isCustomResolver() && ((ExtendedResolver) resolver).getResolvers().length > 1) { |
153 |
if (isCustomResolver() && ((ExtendedResolver) resolver).getResolvers().length > 0) { |
150 |
try { |
154 |
try { |
151 |
Lookup lookup = new Lookup(host, Type.A); |
155 |
Lookup lookup = new Lookup(host, Type.A); |
152 |
lookup.setCache(lookupCache); |
156 |
lookup.setCache(lookupCache); |
153 |
lookup.setResolver(resolver); |
157 |
lookup.setResolver(resolver); |
154 |
Record[] records = lookup.run(); |
158 |
Record[] records = lookup.run(); |
155 |
if (records.length == 0) { |
159 |
if (records == null || records.length == 0) { |
156 |
throw new UnknownHostException("Failed to resolve host name: " + host); |
160 |
throw new UnknownHostException("Failed to resolve host name: " + host); |
157 |
} |
161 |
} |
158 |
addresses = new InetAddress[records.length]; |
162 |
addresses = new InetAddress[records.length]; |