summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Hudson <nick.hudson@isode.com>2013-10-18 15:07:53 (GMT)
committerNick Hudson <nick.hudson@isode.com>2013-10-30 14:30:24 (GMT)
commit14a773c38050d4af9c34c24e426b7a5460ad9735 (patch)
tree5af61e194487903f9266c88dcfe83eb5d31e3231 /src/com/isode/stroke/network/PlatformDomainNameResolver.java
parentb2f5e0d7c7409ef78ff83708e9ba068f6f0ad535 (diff)
downloadstroke-14a773c38050d4af9c34c24e426b7a5460ad9735.zip
stroke-14a773c38050d4af9c34c24e426b7a5460ad9735.tar.bz2
Re-implement DNS lookup to use dnsjava rather than JNDI
There are limitations when using JNDI for DNS lookups, including that it does not properly handle the situation when resolv.conf contains IPv6 addresses (Isode bug #44832) - see e.g. http://java.net/jira/browse/JITSI-295 JNDI is also not readily available on Android, which makes it slightly more awkward to use Stroke on that platform. This patch changes the PlatformDomainName classes so that they use classes from dnsjava rather than JNDI. The patch also updates the build scripts so that dnsjava.jar is fetched (if necessary) and included in the build. Indentation in build.xml has been tidied up Test-information: Ran unit tests - ok Ran MLC - works OK and no longer throws NumberFormatExceptions when resolve.conf contains "nameserver 2001:470:f052::2" Change-Id: Iacf1105c52c281f9e59b60ea6caa011914b588dc
Diffstat (limited to 'src/com/isode/stroke/network/PlatformDomainNameResolver.java')
-rw-r--r--src/com/isode/stroke/network/PlatformDomainNameResolver.java15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/com/isode/stroke/network/PlatformDomainNameResolver.java b/src/com/isode/stroke/network/PlatformDomainNameResolver.java
index 3eef682..32f466d 100644
--- a/src/com/isode/stroke/network/PlatformDomainNameResolver.java
+++ b/src/com/isode/stroke/network/PlatformDomainNameResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2012, Isode Limited, London, England.
+ * Copyright (c) 2010-2013, Isode Limited, London, England.
* All rights reserved.
*/
/*
@@ -16,6 +16,8 @@ import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Collection;
+import org.xbill.DNS.Address;
+
public class PlatformDomainNameResolver extends DomainNameResolver {
private class AddressQuery extends DomainNameAddressQuery implements EventOwner {
@@ -25,10 +27,11 @@ public class PlatformDomainNameResolver extends DomainNameResolver {
public void run() {
final Collection<HostAddress> results = new ArrayList<HostAddress>();
try {
- for (InetAddress result : InetAddress.getAllByName(hostname)) {
+ for (InetAddress result : Address.getAllByName(hostname)) {
results.add(new HostAddress(result));
}
} catch (UnknownHostException ex) {
+ /* results remains empty */
}
eventLoop.postEvent(new Callback() {
public void run() {
@@ -53,17 +56,17 @@ public class PlatformDomainNameResolver extends DomainNameResolver {
}
public PlatformDomainNameResolver(EventLoop eventLoop) {
- this.eventLoop = eventLoop;
+ this.eventLoop_ = eventLoop;
}
@Override
public DomainNameServiceQuery createServiceQuery(String name) {
- return new PlatformDomainNameServiceQuery(getNormalized(name), eventLoop);
+ return new PlatformDomainNameServiceQuery(getNormalized(name), eventLoop_);
}
@Override
public DomainNameAddressQuery createAddressQuery(String name) {
- return new AddressQuery(getNormalized(name), eventLoop);
+ return new AddressQuery(getNormalized(name), eventLoop_);
}
- private final EventLoop eventLoop;
+ private final EventLoop eventLoop_;
}