diff --git a/FastGithub.DomainResolve/DomainResolver.cs b/FastGithub.DomainResolve/DomainResolver.cs index c74cc75..1a3b249 100644 --- a/FastGithub.DomainResolve/DomainResolver.cs +++ b/FastGithub.DomainResolve/DomainResolver.cs @@ -83,16 +83,7 @@ namespace FastGithub.DomainResolve try { await semaphore.WaitAsync(); - - for (var i = 0; i < 2; i++) - { - var address = await this.ResolveCoreAsync(domain, cancellationToken); - if (address != null) - { - return address; - } - } - throw new FastGithubException($"当前解析不到{domain.Host}可用的ip,请刷新重试"); + return await this.ResolveCoreAsync(domain, cancellationToken); } finally { @@ -106,8 +97,9 @@ namespace FastGithub.DomainResolve /// /// /// + /// /// - private async Task ResolveCoreAsync(DnsEndPoint domain, CancellationToken cancellationToken) + private async Task ResolveCoreAsync(DnsEndPoint domain, CancellationToken cancellationToken) { if (this.domainResolveCache.TryGetValue(domain, out var address) && address != null) { @@ -115,10 +107,7 @@ namespace FastGithub.DomainResolve } var expiration = this.dnscryptExpiration; - if (this.dnscryptProxy.LocalEndPoint != null) - { - address = await this.LookupAsync(this.dnscryptProxy.LocalEndPoint, domain, cancellationToken); - } + address = await this.LookupByDnscryptAsync(domain, cancellationToken); if (address == null) { @@ -128,7 +117,7 @@ namespace FastGithub.DomainResolve if (address == null) { - return null; + throw new FastGithubException($"当前解析不到{domain.Host}可用的ip,请刷新重试"); } // 往往是被污染的dns @@ -141,6 +130,31 @@ namespace FastGithub.DomainResolve return address; } + + /// + /// Dnscrypt查找ip + /// + /// + /// + /// + /// + private async Task LookupByDnscryptAsync(DnsEndPoint domain, CancellationToken cancellationToken, int maxTryCount = 2) + { + if (this.dnscryptProxy.LocalEndPoint != null) + { + for (var i = 0; i < maxTryCount; i++) + { + var address = await this.LookupAsync(this.dnscryptProxy.LocalEndPoint, domain, cancellationToken); + if (address != null) + { + return address; + } + } + } + return default; + } + + /// /// 回退查找ip ///