diff --git a/src/main/java/eu/siacs/conversations/utils/Resolver.java b/src/main/java/eu/siacs/conversations/utils/Resolver.java index 6c01f174..d3e0f757 100644 --- a/src/main/java/eu/siacs/conversations/utils/Resolver.java +++ b/src/main/java/eu/siacs/conversations/utils/Resolver.java @@ -93,16 +93,22 @@ public class Resolver { private static ResolverResult resolveWithFallback(DNSName dnsName, Class type) throws IOException { try { - return DnssecResolverApi.INSTANCE.resolveDnssecReliable(dnsName, type); + final ResolverResult r = DnssecResolverApi.INSTANCE.resolveDnssecReliable(dnsName, type); + if (r.wasSuccessful()) { + if (r.getAnswers().isEmpty() && type.equals(SRV.class)) { + Log.d(Config.LOGTAG,Resolver.class.getSimpleName()+": resolving SRV records of "+dnsName.toString()+" with DNSSEC yielded empty result"); + } + return r; + } + Log.d(Config.LOGTAG,Resolver.class.getSimpleName()+": error resolving "+type.getSimpleName()+" with DNSSEC. Trying DNS instead.",r.getResolutionUnsuccessfulException()); } catch (DNSSECResultNotAuthenticException e) { Log.d(Config.LOGTAG,Resolver.class.getSimpleName()+": error resolving "+type.getSimpleName()+" with DNSSEC. Trying DNS instead.",e); - return ResolverApi.INSTANCE.resolve(dnsName, type); } catch (IOException e) { throw e; } catch (Throwable throwable) { Log.d(Config.LOGTAG,Resolver.class.getSimpleName()+": error resolving "+type.getSimpleName()+" with DNSSEC. Trying DNS instead.",throwable); - return ResolverApi.INSTANCE.resolve(dnsName, type); } + return ResolverApi.INSTANCE.resolve(dnsName, type); } public static class Result implements Comparable {