From 21bf7932defcaa6a39a301933c9142ffd39edf77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E4=B9=9D?= <366193849@qq.com> Date: Wed, 17 Nov 2021 23:26:08 +0800 Subject: [PATCH] =?UTF-8?q?AAAA=E8=AE=B0=E5=BD=95=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastGithub.DomainResolve/DnsClient.cs | 24 +++++++++--------------- FastGithub/appsettings.json | 3 +-- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/FastGithub.DomainResolve/DnsClient.cs b/FastGithub.DomainResolve/DnsClient.cs index 9323a63..c13eab9 100644 --- a/FastGithub.DomainResolve/DnsClient.cs +++ b/FastGithub.DomainResolve/DnsClient.cs @@ -91,12 +91,7 @@ namespace FastGithub.DomainResolve foreach (var fallbackDns in this.fastGithubConfig.FallbackDns) { - if (Socket.OSSupportsIPv4 && fallbackDns.AddressFamily == AddressFamily.InterNetwork) - { - yield return fallbackDns; - } - - if (Socket.OSSupportsIPv6 && fallbackDns.AddressFamily == AddressFamily.InterNetworkV6) + if (Socket.OSSupportsIPv6 || fallbackDns.AddressFamily != AddressFamily.InterNetworkV6) { yield return fallbackDns; } @@ -161,9 +156,8 @@ namespace FastGithub.DomainResolve ? (IRequestResolver)new TcpRequestResolver(dns) : new UdpRequestResolver(dns, new TcpRequestResolver(dns), this.resolveTimeout); - var answerRecords = await GetAnswerRecordsAsync(resolver, endPoint.Host, cancellationToken); - var addresses = answerRecords - .OfType() + var addressRecords = await GetAddressRecordsAsync(resolver, endPoint.Host, cancellationToken); + var addresses = addressRecords .Where(item => IPAddress.IsLoopback(item.IPAddress) == false) .Select(item => item.IPAddress) .ToArray(); @@ -178,7 +172,7 @@ namespace FastGithub.DomainResolve addresses = await OrderByConnectAnyAsync(addresses, endPoint.Port, cancellationToken); } - var timeToLive = answerRecords.First().TimeToLive; + var timeToLive = addressRecords.First().TimeToLive; if (timeToLive <= TimeSpan.Zero) { timeToLive = this.defaultEmptyTtl; @@ -188,25 +182,25 @@ namespace FastGithub.DomainResolve } /// - /// 获取答案 + /// 获取IP记录 /// /// /// /// /// - private static async Task> GetAnswerRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken) + private static async Task> GetAddressRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken) { - var answerRecords = new List(); + var answerRecords = new List(); if (Socket.OSSupportsIPv4 == true) { var records = await GetAnswerAsync(RecordType.A); - answerRecords.AddRange(records); + answerRecords.AddRange(records.OfType()); } if (Socket.OSSupportsIPv6 == true) { var records = await GetAnswerAsync(RecordType.AAAA); - answerRecords.AddRange(records); + answerRecords.AddRange(records.OfType()); } return answerRecords; diff --git a/FastGithub/appsettings.json b/FastGithub/appsettings.json index 4daec4e..c75cf82 100644 --- a/FastGithub/appsettings.json +++ b/FastGithub/appsettings.json @@ -4,8 +4,7 @@ "HttpProxyPort": 38457, // http代理端口,linux/osx平台使用 "FallbackDns": [ // 以下dns必须要支持tcp "114.114.114.114:53", - "119.29.29.29:53", - "[2400:3200::1]:53" + "119.29.29.29:53" ], "DomainConfigs": { "*.fastgithub.com": { // 域名的*表示除.之外0到多个任意字符