Change summary
src/main/java/eu/siacs/conversations/utils/Resolver.java | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
Detailed changes
@@ -493,7 +493,11 @@ public class Resolver {
final Question question = new Question(dnsName, Record.TYPE.getType(type));
if (!DNSSECLESS_TLDS.contains(dnsName.getLabels()[0].toString())) {
for (int i = 0; i < 5; i++) {
- if (System.currentTimeMillis() - start > 5000) break;
+ if (System.currentTimeMillis() - start > 5000) {
+ Log.d(Config.LOGTAG, "DNS taking too long, abort DNSSEC retries after " + i + " for " + type.getSimpleName() + " " + dnsName);
+ break;
+ }
+ Log.d(Config.LOGTAG, "DNSSEC try " + i + " for " + type.getSimpleName() + " " + dnsName);
try {
ResolverResult<D> result = DnssecResolverApi.INSTANCE.resolve(question);
if (result.wasSuccessful() && !result.isAuthenticData()) {
@@ -501,8 +505,9 @@ public class Resolver {
}
return result;
} catch (DnssecValidationFailedException e) {
- Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " with DNSSEC. Trying DNS instead.", e);
+ Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " " + dnsName + " with DNSSEC. Try: " + i, e);
// Try again, may be transient DNSSEC failure https://github.com/MiniDNS/minidns/issues/132
+ if ("CNAME".equals(type.getSimpleName())) break; // CNAME failure on NXDOMAIN is common don't retry?
} catch (Throwable throwable) {
Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " with DNSSEC. Trying DNS instead.", throwable);
break;