Change summary
src/main/java/eu/siacs/conversations/utils/Resolver.java | 16 ++++++---
1 file changed, 11 insertions(+), 5 deletions(-)
Detailed changes
@@ -24,11 +24,11 @@ import java.util.List;
import org.minidns.AbstractDnsClient;
import org.minidns.DnsCache;
import org.minidns.DnsClient;
-import org.minidns.dnsname.DnsName;
-import org.minidns.dnsmessage.Question;
-import org.minidns.record.Record;
import org.minidns.cache.LruCache;
+import org.minidns.dnsmessage.Question;
+import org.minidns.dnsname.DnsName;
import org.minidns.dnssec.DnssecResultNotAuthenticException;
+import org.minidns.dnssec.DnssecValidationFailedException;
import org.minidns.dnsserverlookup.AndroidUsingExec;
import org.minidns.hla.DnssecResolverApi;
import org.minidns.hla.ResolverApi;
@@ -39,6 +39,7 @@ import org.minidns.record.AAAA;
import org.minidns.record.CNAME;
import org.minidns.record.Data;
import org.minidns.record.InternetAddressRR;
+import org.minidns.record.Record;
import org.minidns.record.SRV;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
@@ -245,7 +246,6 @@ public class Resolver {
List<Result> results = new ArrayList<>();
try {
ResolverResult<A> aResult = resolveWithFallback(dnsName, A.class);
- Log.d("WUTr", "" + aResult.isAuthenticData() + " " + aResult.getAnswersOrEmptySet());
for (A a : aResult.getAnswersOrEmptySet()) {
Result r = Result.createDefault(dnsName, a.getInetAddress());
r.authenticated = aResult.isAuthenticData();
@@ -278,7 +278,13 @@ public class Resolver {
private static <D extends Data> ResolverResult<D> resolveWithFallback(DnsName dnsName, Class<D> type) throws IOException {
final Question question = new Question(dnsName, Record.TYPE.getType(type));
try {
- return DnssecResolverApi.INSTANCE.resolve(question);
+ ResolverResult<D> result = DnssecResolverApi.INSTANCE.resolve(question);
+ if (!result.isAuthenticData()) {
+ Log.d(Config.LOGTAG, "DNSSEC validation failed: " + result.getUnverifiedReasons());
+ }
+ return result;
+ } catch (DnssecValidationFailedException e) {
+ Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " with DNSSEC. Trying DNS instead.", e);
} catch (IOException e) {
throw e;
} catch (Throwable throwable) {